在我用CakePHP实现全页面缓存之前,我遇到了一些正常工作的网站的问题。
我遵循了手册中的指导,并将我的$session->闪存放在一个无缓存块中,如下所示:
<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
如果我随后转到由另一个控制器创建的页面,则显示正确的(延迟的)消息,并且页面正确加载。
现在,我已经将其作为ticket 282提交给了CakePHP跟踪程序
发布于 2009-11-10 12:20:04
听起来这可能是内核的问题,你试过submitting a bug report吗?
发布于 2009-11-10 14:30:44
你确定闪电信息里有什么东西吗?尝试:
debug($session->read());
或者将其输出到debug.log
$this->log($session->read(), LOG_DEBUG); // this might not work in the view?
发布于 2009-11-10 18:20:42
从错误消息中可以看出,由于某些原因,SessionHelper似乎不可用。
我不确定确切的原因,在应用程序中使用AuthComponent或SessionComponent时,通常会自动加载此帮助器。
这只是一个猜测,但为了更好地衡量,可能值得将$helpers = array('Session', ...);
放在问题控制器或AppController中。
您可以使用debug($this);
检查视图中的所有可用内容
最终,我会采纳Matt的建议,升级到最新的稳定版本。
https://stackoverflow.com/questions/1704948
复制相似问题