2011-11-08 36 views
2

如果我運行控制器「正常」(預訂)控制器拋出異常,我得到我的自定義500錯誤頁面。while twig {%render%}沒有錯誤頁面symfony2

如果我使控制器中的另一個模板中,像這樣:

{% render "BookingBundle:Booking:list" %} 

話,我沒有得到任何東西只是空白輸出。

有沒有辦法讓錯誤頁面顯示在這裏出來做控制器內的try catch?

+0

我不這麼認爲。但是,爲什麼你應該在控制器中出現500錯誤? –

+0

未捕獲的異常或語法錯誤。對不起,只是控制器沒有拋出異常,它的控制器正在使用的服務拋出異常。 –

+0

那麼,一個工作的應用程序不應該拋出未被捕獲或產生語法錯誤的異常,所以我不明白你想在這裏實現什麼。如果您看到控制器的響應爲空,請查看日誌,找到問題並修復它。但是在生產環境中你不需要它。 –

回答

6

當您使用渲染標籤,你可以指定一些選項,第三個參數:

  • ignore_errors在調試模式默認FALSE和TRUE否則
  • ALT替代控制器的情況下執行的錯誤

調試模式通過傳遞true作爲第二個內核的構造函數的參數值噸。你可以看到它在前端控制器類:

$kernel = new AppKernel('dev', true); 

如果你不想忽略錯誤,即使在非調試模式下,你可以這樣做:

{% render 'BookingBundle:Booking:list' with {}, {'ignore_errors':false} %} 
+1

非常感謝「alt」聽起來像我想要的。我討厭沒有解釋的空白屏幕。如果我可以運行另一個控制器,並只顯示一條消息,說明「發生了錯誤」,那將是非常出色的,同時可能會記錄錯誤。沉默地死於用戶不是我的樂趣,它可能會導致混淆(不是我的代碼會有錯誤,會觸發此alt控制器:))。再次感謝 –