在做业务逻辑时,经常需要跳转页面(未登录用户跳转到登录页面)
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里做你想做的工作吧~