2014-12-12 2 views
0

Я использовал следующую библиотеку в моем проекте Yii2: Click hereYii2 Dynamic Maintenance Mode

Я установил его и проверил его и он прекрасно работает. Но теперь я хочу сделать его динамичным, как если бы администратор нажал на переключатель, веб-сайт должен перейти в режим обслуживания. Чтобы это произошло, все, что мне нужно сделать, это сделать допустимую переменную true, которая используется в классе Maintenance этой библиотеки.

Но мой вопрос в том, как связать мой тумблер с этой переменной.

Заранее благодарен!

ответ

2

Вы можете получить доступ к компонентам приложения, как показано ниже:

Yii::$app->componentName 

Таким образом, с помощью этого компонента вы можете получить доступ к нему, как показано ниже:

Yii::$app->maintenanceMode->enable=FALSE; 
4

Настройка сайта 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> 

См. также related post.