2012-09-16 29 views
2

將symfony2與枝條模板一起使用時,我通常使用嵌入在*html.twig文件中的js將更多的頁面進行消化。js文件中的枝條代碼

如果我的外部JS文件附加到我的頁面怎麼辦?我怎麼能在他們內部引入小枝代碼?

我知道這聽起來有點不舒服,但是當嘗試從javascript重定向到已知的symfony路徑時,它並沒有那麼多。就像這樣:

$.post("{{ path('_check_coupon') }}",{code: coupon_code}, function(json) { 
    // do whatever... 
}); 

正如你所看到的,我有一個完全分離的js文件的AJAX調用已知路徑"_check_coupon"

任何想法來解決這個問題?提前

感謝

回答

7

您可以在一個DOM元素的data-path屬性嵌入這樣的路徑,如:

<div id="widget" data-path="{{ path('_check_coupon') }}"> ... </div> 

然後,只需取,

$.post($('#widget').data('path') ,{code: coupon_code}, function(json) { 
    // do whatever... 
}); 

這是一個香草方法,但更可維護的是,將js和twig混合在一個文件中 - 至少你不會得到語法高亮。

當然,如果您正在處理表單,只需獲取表單的action屬性。


無論如何,我勸你還是不要有兩個JS和標記在同一頁上:您將無法緩存的腳本,也不把它們最小,因此考慮去耦他們,除非它只是涉及到非常非常幾行。隨時檢查my little library about

+0

好的!非常感謝! – ElPiter

0

我知道答案是舊的,但我遇到了同樣的問題,並通過使用verbatim標籤找到了以下解決方案。

// {% verbatim %} 
(function() { 
// {% endverbatim %} 
    var val = "{{ myImportVar|raw }}"; 
// {% verbatim %} 

    /** 
    * JS Code 
    */ 
    console.log(val); 
}()); 
// {% endverbatim %} 

我把它們包裹在JS註釋中,以使我的編輯器提示等工作。