谁一开始就是大神?

redirect()方法不能终止行为[2.0]

在做业务逻辑时,经常需要跳转页面(未登录用户跳转到登录页面)
controller中有个redirect()方法,按理说应该执行了该方法就应该终止后续操作直接跳转。
但结果相反,如果不写return,则继续执行。
案例:
我在controller中的init()方法加入逻辑代码,当执行$this->redirect($url)时,不管我是否加return false 、return true都没有用,他还是继续执行完代码。只能使用header(“Location:$url”);exit;解决此问题。
请问在controller中,什么代码可以代替header(“Location:$url”);exit;

没错儿, 必须 return 才能立马跳转, 而不执行后续代码;
redirect() 中 只指定了响应的 http status code,
你所说的 header() 发生在 send response 的时候
你可以 return $this->redirect('xxx');
或者 显式调用 Yii::$app->response->send();
再或者 Yii::$app->end();
最简洁的 还是return;
在beforeAction里做你想做的工作吧~

赞(0) 打赏
未经允许不得转载:菜鸟之家 » redirect()方法不能终止行为[2.0]

评论 抢沙发

登录

找回密码

注册