我在使用CakePHP实现整页缓存之前,网站运行正常有问题。
我已遵循手册中的指导,并将我的$ session-> flash置于无缓存块中,如下所示:
<cake:nocache>
<?
if($session->check('Message.flash')){
$session->flash();
}
?>
</cake:nocache>
但是,只要控制器设置了Flash消息并重定向到缓存页面,页面就会向下加载到标记,然后给出错误:
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
如果我然后转到另一个控制器创建的页面,则会显示正确的(延迟的)消息并正确加载页面。
我现在已将此作为ticket 282
提交给CakePHP trac答案 0 :(得分:1)
听起来这可能是核心问题,你试过submitting a bug report吗?
答案 1 :(得分:1)
您确定Flash消息中有什么内容吗?尝试:
debug($session->read());
OR将其输出到debug.log
$this->log($session->read(), LOG_DEBUG); // this might not work in the view?
答案 2 :(得分:1)
查看错误消息,似乎SessionHelper由于某种原因不可用。
我不确定为什么,在您的应用程序中使用AuthComponent或SessionComponent时,通常会自动加载此帮助程序。
只是一个猜测,但可能值得将$helpers = array('Session', ...);
放在问题控制器或AppController中进行测量。
您可以使用debug($this);
最终,我会接受马特的建议并升级到最新的稳定版本。