我只是遇到了一个令人费解的情况。我的控制器操作如下所示:
public function myaction($eventId = false) {
if(!$eventId) {
//list all events
$data = foo;
} else {
if(!$this->Event->findById($eventId) )
{
$this->Session->setFlash('myerror message', 'flash_frontend_message');
$this->redirect(array('controller' => 'events', 'action' => 'myaction'));
} else {
// display event information
$data = foo;
}
}
$this->set($data);
}
如果我使用在数据库中找不到的 $eventId 调用该函数,它会输出一条错误消息,并且用户会被重定向回所有事件的列表。但是,假设我选择了一个有效的 eventId,查看相关信息,然后按浏览器后退按钮,之前的 flash 消息再次输出,即使这种情况下的 URL 不包含 $eventId。
我想会发生什么是页面从浏览器缓存中加载而不是重新加载。我试图避免像这样将视图存储在缓存中:
<!--nocache-->
<?php echo $this->Session->flash(); ?>
<?php echo $this->Session->flash('auth'); ?>
<!--/nocache-->
但仍然会显示 Flash 消息。
知道如何防止这种行为吗?有没有办法在显示后清除闪光灯?