2017-08-31 51 views
0

调用的路线在外部js文件在我的树枝文件我打电话给我的AJAX的路线,像这样是否有可能在斯利姆

var fund = $('#fund'); 

     //this will call php to populate fund drop-down 
     $.ajax({ 
     url: "{{ path_for('myfundrequest') }}", 
     type: 'get', 
     dataType: 'json' 
     }).done(function (response) { 
     var len = response.length; 

     fund.empty(); 

     for (var i = 0; i < len; i++) { 
     var fundNum = response[i][0]; 
     var fundName = response[i][1]; 

     fund.append("<option value='" + fundNum + "'>" + fundNum + ' -- ' + fundName + "</option>"); 
     } 
     fund.prepend("<option value=''>- Select A Fund -</option>").val(''); 
     }).fail(function (jqXHR, textStatus, error) { 
     console.log("getFund: " + error); 
     }); 
     }); 

,这里是我的路由

$app->get('/fundrequest', 'PoEntryController:funds')->setName('myfundrequest'); 

我的问题是,如果我在公用文件夹 中创建一个外部js文件,可以在外部文件中使这个工作url: "{{ path_for('myfundrequest') }}

+0

它不会被Slim处理,对吧?你只需要在Slim之外运行一些文件?它是另一个PHP文件吗?你在使用Apache类型的服务器吗? –

+0

那么url正在调用一个控制器中的函数。和是的Apache。 – moe

+0

如果您不希望Slim处理url,而是想直接在URL中运行该文件,则可以设置.htaccess,以便Slim不会处理现有文件的URL。如果这是你感兴趣的东西,我会发布一个答案。 –

回答

1

不,它在普通的JavaScript文件不可能的,但

我能想到的两个选项:

  1. 与树枝添加JavaScript文件作为树枝文件,然后再使其在路线上。

    $app->get('/data/myScripts.js', 'ScriptProvider:myScript'); 
    
    class ScriptProvider { 
        public function myScript($req, $res) { 
         return $this->view->render($res, 'data/myScript.js.twig'); 
        } 
    } 
    
  2. 添加网址为全局变量,也许上的全局对象

    index.twig

    <!-- [..] --> 
    <script> 
        Url = { 
         myfundrequest: "{{ path_for('myfundrequest') }}" 
        }; 
    </script> 
    

    ,再后来在JavaScript

    $.ajax({ 
        url: Url.myfundrequest, 
        .. 
    
  3. 使用 Url.myfundrequest作为网址

第二个选项会更高效,因为树枝引擎不需要运行。

+0

我尝试了第二种方法,并得到这个错误'''%7B%7B%20path_for('myvendorrequest')%20%7D%7D''' – moe

+0

@moe你在哪里得到一个错误,这也不是那里的错误应该给它一些信息。 – jmattheis

+0

我在我的控制台中看到它。这是响应'''{“message”:“Not found”}''' – moe