2011-09-08 64 views
0

我使用Assetic來包含Javascript文件,但在開發環境中使用時,/app_dev.php被添加到URL的開頭,因此最終的url看起來像/app_dev.php/js/something.js。嘗試加載JS時會導致404錯誤。當我從生產環境訪問網站時,網址不包含包括/app_dev.php,並且一切正常。爲什麼我的開發人員前端控制器包含在資產URL中?

我可以添加一個條件來檢查它是否是開發環境,並在URL上調用str_replace,但我想解決這個問題的根源,如果可能的話。

編輯

@gilden,我會明白,在開發中,他們將得到處理每一次,但網址只會導致404。

這裏是我的Assetic配置:

assetic: 
    debug:   %kernel.debug% 
    use_controller: false 
    filters: 
     cssrewrite: ~ 
     # closure: 
     #  jar: %kernel.root_dir%/java/compiler.jar 
     # yui_css: 
     #  jar: %kernel.root_dir%/java/yuicompressor-2.4.2.jar 

這裏就是我如何使用它在我的模板(應用程序/資源/視圖/ base.html.php)

foreach ($view['assetic']->javascripts(
      array('@AssetsBundle/Resources/public/js/*'), array(), array('output' => 'js/combined.js')) as $url) { 
      echo 'url: ' . $url . '<br />';  
     } 

我那麼包括$ url使用我編寫的自定義幫助程序,但它已經包含app_dev.php。

+0

這是預期的行爲 - 在開發環境中,您的腳本每次被Assetic處理以簡化開發。我猜Assetic沒有正確配置。你可以發佈關於Assetic的配置部分嗎?也很高興看到您的模板。 – gilden

+0

啊!我甚至沒有想過在config_dev.yml中尋找。這解決了它。謝謝! –

回答

2

我沒有在Symfony中使用php模板,所以我害怕我沒有最好的答案。通過使用一些自定義代碼,您可能會繞過一些內部邏輯,它會處理對控制器的請求。

作爲解決方法,您可以嘗試從/app/config_dev.yml中刪除assetic: use_controller: true

相關問題