Yii2 $this->redirect 无法正常跳转
- 3987
- PHP
- 0
- super_dodo
- 2019/06/17
最近在开发功能中 发现redirect竟然不能正常跳转,查了好长时间,还以为写的代码有问题,主要是在beforeAction中做了是否登录的判断,未登录则跳转到登录页面,所有的类继承的这个BaseController。
<?php //控制器之前先判断用户是否有权限 public function beforeAction($action) { //得到当前访问的路由 $access = '/hello/dodo'; //如果该路由是永远被允许的 if (in_array($access, $this->allowedAccess())) { return true; }else{ //用户登录页面 if(\Yii::$app->user->isGuest){ //如果用户未登录 $this->redirect('/site/login'); // Yii::$app->response->send(); // Yii::$app->end(); } } } ?>
在正常情况下,使用 return $this->redirect($url);
解决方式一:在redirect后面使用send()
$this->redirect(登录页地址)->send();
$this->redirect(登录页地址l);
Yii::$app->response->send();
解决方式二:
$this->redirect(登录页地址);
Yii::$app->end();
总结:
用\Yii::$app->end();
\Yii::$app->response->send();
不管在actionXXX还是init方法都能终止代码,而return只能在action终止代码,是因为在init()里仅仅是代码的执行,return只是代码返回。
伤痛让人清醒,人生任何事情,原来都要靠自己。别人的怜悯,搏不来美好的未来。
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例