Redirect yii2在init中重定向是否有效?
我已经覆盖了控制器。当我尝试做过滤器时,我发现了这个问题。我很困惑,有什么帮助吗?来自Yii2文档: 如果操作不应运行,则应处理请求 通过提供必要的 输出或重定向请求。否则,响应将是无效的 空的 Yii2不关心Redirect yii2在init中重定向是否有效?,redirect,yii2,init,Redirect,Yii2,Init,我已经覆盖了控制器。当我尝试做过滤器时,我发现了这个问题。我很困惑,有什么帮助吗?来自Yii2文档: 如果操作不应运行,则应处理请求 通过提供必要的 输出或重定向请求。否则,响应将是无效的 空的 Yii2不关心init()函数的返回值。应用程序仍将继续运行操作。 关于redirect()函数,直到应用程序完成(beforeActionreturn false或action return)它才会工作。因此,当您在init()函数中调用redirect()时,什么都不会发生。 但是return$th
init()
函数的返回值。应用程序仍将继续运行操作。
关于redirect()
函数,直到应用程序完成(beforeAction
return false或action return)它才会工作。因此,当您在init()
函数中调用redirect()
时,什么都不会发生。但是
return$this->redirect('/login')代码>它可以工作。为什么?因为在这种情况下,应用程序会在运行操作后重定向。
您可以尝试,甚至可以编写$this->重定向('/login')代码>它仍然有效。谢谢你的回答,但我不得不使用“echo$this->redirect('/purchaser/manifest')”。至少我知道原因。
class TestController extends Controller {
function init() {
if(!(strtolower(yii::$app->requestedRoute) == "account/login" || empty(yii::$app->requestedRoute)))
{
if (false===$this->isLogin()) {
return $this->redirect('/login'); //it works, will redirect
}
} else {
if($this->isLogin()) {
return $this->redirect('/purchaser/manifest'); //not work, won't redirect
//echo $this->redirect('/purchaser/manifest'); //work
}
}
}
}
public function beforeAction($action)
{
if (!parent::beforeAction($action)) {
return false;
}
// your custom code here
//Eg
if(something){
$this->redirect('/login');
return false; //not run the action
}
return true; // continue to run action
}