CakePHP 闪存消息触发延迟

时间:2021-04-20 17:57:17

标签: php cakephp cakephp-2.0

我有一个在 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),但没有任何变化。网站在必要时使用数据库会话

如果您能帮助我们解决这种情况,我们将不胜感激!

1 个答案:

答案 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 } ?>
相关问题