I've read about Yii2's handlers and I don't grasp how to use them properly for this case.
Basically in my SiteController
, I have:
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
}
This seems to work well and stop the execution, however I get the "Headers already sent" for the render()
line, as if it was doing a redirection.
If I write Yii::$app-end()
instead of return false
, same thing happens.
If I write exit();
instead of return false
, no exception shows but the debug panel doesn't show since Yii doesn't terminate correctly.
I tried removing echo $this->render(..)
and it results in an empty page, no redirection whatsoever, this seems like it's only Yii complaining that I echo stuff from the Controller.
And of course I can't return the result of render()
or return true
, since it will execute the page's action, which I'm trying to avoid and end here.
I know returning false in beforeAction()
triggers EVENT_BEFORE_ACTION
but I don't see where I'm supposed to use that. The events documentation didn't really help me.
So is there a way to display the "standby" view, preventing other actions from executing and avoid the error message for echoing from the Controller
?
Please note that I'm trying to make this work without having to duplicate code in each action method to check if the result of beforeAction()
was false.