Я использовал следующую библиотеку в своем проекте Yii2: кликните сюда
Я настроил и проверил это, и он прекрасно работает. Но теперь я хочу сделать его динамичным, так как если администратор нажимает на тумблер, веб-сайт должен перейти в режим обслуживания. Чтобы это произошло, все, что мне нужно сделать, это сделать включенную переменную true, которая используется в классе обслуживания этой библиотеки.
Но мой вопрос заключается в том, как мне связать мой тумблер с этой переменной.
Заранее спасибо!
Вы можете получить доступ к компонентам приложения, как показано ниже:
Yii::$app->componentName
Итак, с этим компонентом вы можете получить к нему доступ, как показано ниже:
Yii::$app->maintenanceMode->enable=FALSE;
Перевод сайта Yii2 в режим обслуживания означает форсирование маршрута перед обработкой запроса. Это можно просто сделать через конфиг on beforeRequest
закрытие:
в /config/web.php
return [
...
'bootstrap' => ['log'],
'on beforeRequest' => function ($event) {
if (Yii::$app->params['portalMode'] == 'maintenance') {
$letMeIn = Yii::$app->session['letMeIn'] || isset($_GET['letMeIn']);
if (!$letMeIn) {
Yii::$app->catchAll = [
// force route if portal in maintenance mode
'site/maintenance',
];
}else{
Yii::$app->session['letMeIn'] = 1;
}
}
},
'components' => [
...
]
и в SiteController создайте действие «actionMaintenance»:
public function actionMaintenance()
{
return $this->render('maintenance');
}
и ввиду views/site/maintenance.php
настроить макет:
<h1>The site is currently under maintenance</h1>
<p>We apologize for inconvenience. Please come back later.</p>
Смотрите также связанный пост.