当前位置: 首页 > 知识库问答 >
问题:

Yii2-重定向后不可见闪烁

巩才捷
2023-03-14

在重定向的情况下,Flash消息似乎会被破坏。我编写了简单的测试代码:

public function actionTest($test = 0) {
    if($test == 0) {
        Yii::$app->getSession()->addFlash('success', 'Follow the white rabbit');
        return Yii::$app->getResponse()->redirect(array('test', 'test' => 1));
    }
    return $this->render('test', []);
}

调用不带参数的操作,它会添加一个flash并重定向。当它呈现页面时-flash不存在。

视图部分很好,因为如果我设置flash并在不重定向的情况下进行渲染,它会正确渲染。

为什么?

编辑:布局视图代码:

<?php

use frontend\widgets\Alert;

$this->beginPage();
echo $this->render('partials/head');
?>

<body class="no-sidebar">
    <?= $this->beginBody() ?>
    <div id="header">
        <?= $this->render('partials/top') ?>
        <?= $this->render(Yii::$app->user->isGuest ? 'menus/guest' : 'menus/registered') ?>
    </div>
    <!-- Main -->
    <div id="main">
        <?= Alert::widget() ?>
        <?= $content ?>

    </div>

    <?= $this->render('partials/footer') ?>
    <?= $this->endBody() ?>
</body>
</html>

<?php $this->endPage() ?>

共有3个答案

张丰
2023-03-14

在重定向中添加返回

Yii::$app->session->getFlash('key', 'message');

return $this->redirect(['yourAction']);
薛承基
2023-03-14

您的代码看起来不错,我不确定问题是什么。您可以尝试使用

return $this->redirect(['test', 'test' => 1]);

而不是

return Yii::$app->getResponse()->redirect(array('test', 'test' => 1));

这是大多数Yii示例的方式。但是在查看http://www.yiiframework.com/doc-2.0/yii-web-response.html#redirect()-细节后,您的代码看起来不错

你确定你的会话工作正常,并且在任何时候都没有破坏它吗?

这对我有用:

public function actionChangeDetails()
    {
        $model = Contact::findOne(Yii::$app->user->identity->id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            Yii::$app->session->setFlash('success', 'Form Saved');
            return Yii::$app->getResponse()->redirect(['my-account/change-details']);
        }

        return $this->render('changeDetails', [
            'model' => $model,
        ]);
    }
微生运浩
2023-03-14

我得到了相同的错误,直到我发现我的代码中缺少返回。因此,使用返回$this-

 类似资料:
  • 每个人登录后,我一直无法使用Laravel重定向。连接工作,在我登录后,它重定向到一个空白页面,但如果我更改url路径,我可以访问不同的网页。我们将不胜感激!我正在使用LDAP进行连接,它正在工作。 请让我知道,如果有任何其他代码,我应该提供。 非常感谢。 (重定向IfAuthenticated.php) 命名空间应用程序\ Http\中间件; 使用闭包;使用Illumb\Support\Faca

  • 我有三个活动,每个都有一个按钮。Act1与btn1,Act2与btn2,Act3与btn3。我有另一个活动作为主活动,有三个图像视图:ImageView1、imageView2和imageView3,所有这些最初都是不可见的。我希望这样,当我在act1中单击btn1时,MainActivity中的imageView1将可见,而当再次单击btn1,ImageView 1将再次不可见。与imageVi

  • 我不知道在modelAndView中发布后如何重定向 我该怎么做?

  • 我是一个android编程新手,在我的应用程序中,我使用recycleview来显示SQLite数据库的内容,我将数据库读入一个Arraylist,我在recycleview中显示它。我已经成功实现了向左滑动(删除项目)和向右滑动(编辑项目)功能。我在向左滑动时遇到了一个问题,这意味着在删除功能中,我实现了一个撤销功能: (SequenceItem 是我的自定义项类,sequenceItemLis

  • 我有一个登录表单,在单击时调用以下函数。 然后使用重定向 但我面临的问题是,当我第一次登录时,重定向无法工作。它设置了所有的cookie等等,但是它从来没有将用户重定向到想要的目录。所以我被迫在浏览器搜索栏中输入我想要的路由来重定向自己。 这意味着,一旦我强迫自己进入想要的目录,如果我注销(基本上删除cookies),并尝试再次登录。这一次重定向起作用了。 在我用Ctrl+F5清除所有缓存之前,它

  • 问题内容: 我一直在寻找有关该主题的许多文章,但找不到适合我的解决方案。 我正在将Java EE 6与JSF 2.0结合使用(在JBoss AS 7.1上部署) 在我的我有: 并且我 希望在会话自动超时时将用户重定向到登录页面。 我尝试过的 方法1:使用过滤器 我尝试了以下过滤器: 在我尝试过的 和 过滤器在每次请求时都会被调用(在控制台中记录“被调用的适配器”)。 但是,会话超时时不会调用它。