2017-08-31 35 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