我读过 Yii2 的处理程序,但我不知道如何在这种情况下正确使用它们。
基本上在我的SiteController
, 我有:
class SiteController extends \app\components\Controller
{
public function beforeAction($action)
{
// Makes some checks and if it's true, will render a file and stop execution of any action
if (...)
echo $this->render('standby');
return false;
}
return true;
}
// All my other actions here
}
这似乎运行良好并停止执行,但是我得到了“标头已发送”render()
行,就好像它正在执行重定向一样。
如果我写Yii::$app-end()
代替return false
,同样的事情发生。
如果我写exit();
代替return false
,没有显示异常,但调试面板没有显示,因为 Yii 没有正确终止。
我尝试删除回声$this->render(..)
它会导致一个空页面,没有任何重定向,这似乎只是 Yii 抱怨我从控制器回显内容。
当然我不能返回结果render()
或返回true
,因为它将执行页面的操作,我试图避免并在此结束。
我知道返回 falsebeforeAction()
触发器EVENT_BEFORE_ACTION
但我不知道我应该在哪里使用它。这事件文档 https://www.yiiframework.com/doc/guide/2.0/en/concept-events并没有真正帮助我。
那么有没有办法显示“备用”视图,阻止其他操作执行并避免从回显的错误消息Controller
?
请注意,我试图完成这项工作,而不必在每个操作方法中重复代码来检查结果是否beforeAction()
是假的。