Symfony 1.4 - передача сообщения forward404 на шаблон error404 в рабочем режиме - PullRequest
2 голосов
/ 21 октября 2010

В моем приложении я хочу использовать $ this-> forward404 («Данные не найдены»); при необходимости выводить отдельные сообщения об ошибках. В режиме разработки работает нормально. Когда я запускаю свое приложение в производственном режиме - где отладка имеет значение false в getApplicationConfiguration () - я больше не получаю сообщения.

в settings.yml Я установил пользовательское действие 404. все: .actions: error_404_module: main error_404_action: custom404

Как я могу передать forward404 моему шаблону custom404Success.php ???

Ответы [ 2 ]

4 голосов
/ 26 октября 2010

Если вы можете получить код метода , вы можете увидеть, что метод генерирует исключение sfError404Exception, которое обрабатывает уважение окружающей среды. В dev он просто генерирует исключение, а в prod он может обрабатываться через 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);
}
2 голосов
/ 22 октября 2010

Обработка 404 полностью отличается от prod и dev. В prod сообщение, которое вы передаете forward404, просто записывается в журнал и не передается действию обработчика.

Есть много способов обойти это, но самым быстрым (хотя и самым грязным) было бы сохранить сообщение где-нибудь в статической переменной, чтобы обработчик 404 мог получить к нему доступ, как только процесс туда попадет, например,

В вашем действии,

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

А в вашем обработчике 404 (при условии, что он в CommonActions),

<?php
if (self::$message404) {
    $this->message = self::$message404;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...