Извините, сайт на техническом обслуживании

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
paradox81ru
Сообщения: 40
Зарегистрирован: 2014.11.13, 14:18

Извините, сайт на техническом обслуживании

Сообщение paradox81ru »

Здравствуйте. Подскажите пожалуйста как более корректно было бы создать возможность через админку переключать сайт в режим технического обслуживания. У меня только есть идея, это создать свой главный класс контроллера, от которого наследовать все остальные контроллеры, а в главном контроллере, перед вызовом любого экшена, проверять, надо ли запустить экшен, или отобразить информацию о техническом обслуживании сайта. Хорошая ли это идея, или есть идеи лучше? Или может быть во фреймворкере есть какие-либо штатные способы решения этой задачи?
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Извините, сайт на техническом обслуживании

Сообщение astronin »

нормальная идея
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Извините, сайт на техническом обслуживании

Сообщение zelenin »

paradox81ru писал(а):У меня только есть идея, это создать свой главный класс контроллера, от которого наследовать все остальные контроллеры
- это называется god object и является плохим паттерном
- как вы будете наследовать 3rd party контроллеры?
- для этого существуют поведения и события
- существует catchAll https://github.com/yiisoft/yii2/blob/ma ... on.php#L47
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Извините, сайт на техническом обслуживании

Сообщение chesar »

Навесить событие на

Код: Выделить всё

\Yii::EVENT_BEFORE_REQUEST
в котором проверять состояние приложения и в случае необходимости прерывать работу и рендерить layout - заглушку.
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Извините, сайт на техническом обслуживании

Сообщение astronin »

о, catchAll круче
paradox81ru
Сообщения: 40
Зарегистрирован: 2014.11.13, 14:18

Re: Извините, сайт на техническом обслуживании

Сообщение paradox81ru »

chesar писал(а):Навесить событие на

Код: Выделить всё

\Yii::EVENT_BEFORE_REQUEST
в котором проверять состояние приложения и в случае необходимости прерывать работу и рендерить layout - заглушку.
Спасибо большое. Буду работать в этом направлении. И про catchAll раньше не знал или внимание на нее не обращал, надо посмотреть что это за свойство. Спасибо.
paradox81ru
Сообщения: 40
Зарегистрирован: 2014.11.13, 14:18

Re: Извините, сайт на техническом обслуживании

Сообщение paradox81ru »

unclead писал(а):может пригодится https://github.com/brussens/yii2-maintenance-mode
Прекрасно. Простое и довольно эффективное решение задачи. Буду пробовать. Спасибо большое.
Ответить