我有一个在 PHP 5.3.29 上运行的 CakePHP 2.5.1 网站(虽然我已经用更新的 2.10.18 版本进行了测试)(我知道,旧东西)。
我遇到的问题是 Flash 消息,看似随机(但大多数情况下),不会在应该显示的时候显示,而是在我重新加载页面后显示再一次(或加载不同的页面)。
例如,当用户注销时(我使用身份验证组件),我设置了一个像 $this->Session->setFlash('Logout successful');
这样的快闪消息。因此,在正常情况下,用户单击注销链接,被重定向到站点的主页,并且该消息显示为 javascript 警报。这就是我实现的方式:
<?php if( $this->Session->check('Message.flash') ){ ?>
<script type="text/javascript">alert('<?php echo $this->Session->flash(); ?>')</script>
<?php } ?>
问题是,这不会每次都发生,只是有时。其他时候,根本不显示 Flash 消息,但如果我刷新页面(或导航到同一站点的不同页面),然后消息会显示。
我不知道是什么原因导致了这种情况,也不知道如何进行故障排除,因为它似乎是随机发生的。我尝试在 core.php 文件中禁用缓存并启用调试模式 (2),但没有任何变化。网站在必要时使用数据库会话。
如果您能帮助我们解决这种情况,我们将不胜感激!
答案 0 :(得分:0)
我用的这种方式,在setFlash中传递参数,希望能帮到你。
<!-- CONTROLLER -->
<?php
if (logout) {
$this->Session->setFlash('Logout success!', 'default', array(), 'Success');
return $this->redirect(array('controller' => 'path/path', 'action' => 'main'));
}
?>
<!-- VERIFICATION IN VIEW (USING BOOTSTRAP )-->
<?php if (($this->Session->check('Message.Success'))) { ?>
<!-- START: Return message -->
<div class="alert alert-success">
<?php echo $this->Session->flash('Success'); ?>
</div>
<!-- END: Return message -->
<?php } ?>