Cakephp не перенаправляет должным образом, когда страницы кэшируются - PullRequest
4 голосов
/ 10 ноября 2009

У меня есть некоторые проблемы с сайтом, который работал правильно, пока я не реализовал полное кэширование страниц в CakePHP.

Я следовал инструкциям в Руководстве, и мой $ session-> flash в блоке без кеширования выглядит так:

<cake:nocache>
    <? 
    if($session->check('Message.flash')){
        $session->flash();
    } 
    ?>
</cake:nocache>

Однако всякий раз, когда контроллер устанавливает флэш-сообщение и перенаправляет на кэшированную страницу, страница загружается в тег, а затем выдает ошибку:

Notice (8): Trying to get property of non-object
[CORE/cake/libs/view/helpers/session.php, line 145]

Fatal error: Call to undefined method stdClass::renderLayout() in
/home/decipherd/domains/example.com/public_html/beta/cake/libs/view/helpers/session.php
on line 14

Если я затем перехожу на страницу, созданную другим контроллером, отображается правильное (отложенное) сообщение и страница загружается правильно.

Я отправил это в CakePHP trac как Билет 282

Ответы [ 3 ]

1 голос
/ 10 ноября 2009

Вы уверены, что во флеш-сообщении что-то есть? Попробуйте:

debug($session->read());

ИЛИ вывести его в файл debug.log

$this->log($session->read(), LOG_DEBUG); // this might not work in the view?
1 голос
/ 10 ноября 2009

Глядя на сообщение об ошибке, кажется, что SessionHelper по какой-то причине недоступен.

Я не уверен, почему именно этот помощник обычно загружается автоматически при использовании AuthComponent или SessionComponent в вашем приложении.

Просто предположение, но, возможно, стоит поставить $helpers = array('Session', ...); в свой контроллер проблем или AppController для хорошей меры.

Вы можете проверить все доступное для просмотра с помощью debug($this);

В конечном счете, я бы воспользовался советом Мэтта и все равно обновился бы до последней стабильной версии.

1 голос
/ 10 ноября 2009

Похоже, что это может быть проблема с ядром, вы пытались отправить отчет об ошибке ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...