問題在於被覆蓋的Twig 404模板。它通過在/ app/Resources/TwigBundle/views目錄下創建error404.html.twig以默認方式被覆蓋。
模板本身不包含任何不規則或複雜的邏輯:只是帶有一些翻譯文本(| trans)和帶有多個鏈接的菜單的佈局。
問題是,我無法在此模板中獲取app.user對象(返回爲NULL)或當前的app.request.locale(始終作爲默認語言環境返回)。
我甚至試圖覆蓋樹枝異常控制器並轉儲當前語言環境(Request :: getLocale())或獲取用戶 - 結果是相同的 - 默認的語言環境和用戶的NULL。
然後我決定深入挖掘,發現了幾十個聽衆(語言環境聽衆,例外情況,...),並試圖在那裏調試/修復/測試,但我沒有進一步處理。
順便說一句,我已經覆蓋了500錯誤頁面,並且一切都很好。那麼我猜,當引發500錯誤(異常)時,symfony已經設置了用戶/ locale/etc,因爲它已經到達目標(控制器/動作),並且其他監聽器已經執行。但是404錯誤(NotFoundHttpException)被拋出之前Symfony的目標是動作...
關於項目的一些話:symfony 2.4.8,doctrine,Gedmo擴展/ stof bundle,JMS i18n routing bundle。
Symfony的版本:v2.4.8 JMS的I18n路由包:1.1.1
感謝你的幫助。
問題已解決(儘可能)。解決方案由devilcius提出。 – Dmitry 2014-12-04 11:14:33