Я читал об обработчиках 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 завершается неправильно.
Iпопытался удалить echo $this->render(..)
, и это привело к пустой странице, без перенаправления, похоже, что Yii жалуется только на то, что я передаю данные из контроллера.
И, конечно, я не могу вернуть результатrender()
или верните true
, так как он выполнит действие страницы, которое я пытаюсь избежать, и на этом заканчиваю.
Я знаю, возвращая false в beforeAction()
триггерах EVENT_BEFORE_ACTION
, но я нене вижу, где я должен это использовать. документация по событиям мне не очень помогла.
Так что есть способ отобразить «ждущий» вид, не допуская выполнения других действий и избегая сообщения об ошибке для эха от Controller
?
Обратите внимание, что я пытаюсь сделать эту работу без дублирования кода в каждом методе действия, чтобы проверить, был ли результат beforeAction()
ложным.