2010-10-21 44 views
2

在我的應用程序中,我想使用$ this-> forward404(「Data not found」);在必要時輸出單個錯誤消息。 在開發模式下,它工作正常。當我在生產模式下運行應用程序時 - getApplicationConfiguration()中的debug設置爲false - 我不再收到消息。Symfony 1.4-forward404將消息傳遞給生產模式下的error404模板

in settings.yml我設置了一個自定義的404動作。 所有: .actions: error_404_module:主要 error_404_action:custom404

如何傳遞的forward404我custom404Success.php模板???

+0

嗨。您應該在問題中使用「代碼」標籤以提高可讀性。無論如何,我也很樂意得到這個答案。 ;) – 2010-10-21 23:29:49

回答

2

404處理在proddev之間完全不同。在prod中,將傳遞給forward404的消息簡單地寫入日誌,而不傳遞給處理程序操作。

有很多方法可以解決這個問題,但最快(儘管最髒)是將消息存儲在某個靜態變量中,以便404處理程序在進程到達時可以訪問它。

在你的行動,

<?php 
CommonActions::$message404 = 'My message'; 
$this->forward404(); 

而在你的404處理器(假設它在CommonActions),

<?php 
if (self::$message404) { 
    $this->message = self::$message404; 
} 
4

如果你能得到code of method你可以看到,方法拋出sfError404Exception,處理環境的尊重。在dev中,它簡單地拋出一個異常,並且它可能是通過set_exception_handler(「my_handle」)處理的。

您可以覆蓋這個方法(公開)上

public function forward404($message = null) 
{ 
    // write to session and call from 404_template via <?php echo $sf_user->getFlash("404message") ?> 
    $this->getUser()->setFlash("404message", $message); 

    parent::forward404($message); 
}