2017-11-10 18:47:27 2037次浏览 1条回答 0 悬赏 10 金钱

今天用到Yii::$app->session里面的falsh做消息,但是每次一跳转页面信息就没了;

大概需求为
同一分组下某一个特定用户的modulesmo模块下,需要某些特性的用户才能访问,所以新建了一个代理商父类控制器,在父类控制的init方法中判断,不符合要求就跳转再提示信息

父类控制器:
Yii::$app->session->setFlash('tips', '您还不是服务商,请先进行服务商认证');

然后在视图中显示,我把消息弹框和动画做了一个widgets,里面是(未贴js)
<?php if (Yii::$app->session->hasFlash('tips')) { ?>

<div class="layui-anim jw_tips">
    <p class="tx_title">****提醒您<i class="layui-icon">&#xe63a;</i></p>
    <p><?= Yii::$app->session->getFlash('tips') ?></p>
</div>

<?php } ?>

父类中如下
if (!Yii::$app->user->identity->agent) {

Yii::$app->session->setFlash('tips', '您还不是服务商,请先进行服务商认证');
return $this->redirect(['/agent/sign/login']);
Yii::$app->end();

}

按我想的过程是:
1:进入本模块->在init中判断拦截->不符合跳转显示在视图
但是问题来了,每次跳转过去后信息都不存在, 都为空,但是各种配置都正确,后面进入源码看了很久,打印输出测试后面才发现是在父类控制器设置了信息后程序并没有停止跳转,二十继续运行了,等于已经getFlash了一边,所以到了指定视图后就为空了,但是视图并不会显示出来

我直接在父类echi script的跳转代码就没问题

我想问问,在 return 和 Yii::$app->end();后,程序还是会默认把当前请求的页面运行一次吗?

补充于 2017-11-10 18:48

有几个错别字,将就看下

您需要登录后才可以回答。登录 | 立即注册
竹林风
经理

竹林风

注册时间:2017-04-06
最后登录:2022-02-15
在线时长:53小时3分
  • 粉丝4
  • 金钱135
  • 威望40
  • 积分1065

热门问题