ale10257 / yii2-maintenance-mode
为 Yii 框架 2.x.x 版本提供维护模式组件。
dev-master
2019-02-03 04:37 UTC
Requires
- yiisoft/yii2: ~2.0.15
This package is not auto-updated.
Last update: 2024-09-23 17:52:40 UTC
README
该组件基于由 Brusenskiy Dmitry 编写的 Maintenance mode 组件。
安装
在控制台中
composer require ale10257/yii2-maintenance-mode "@dev"
或者将以下内容添加到 composer.json
文件的 require
部分
"ale10257/yii2-maintenance-mode": "@dev"
默认情况下,如果您使用此组件关闭网站,则网站将对所有人关闭,包括管理员。
由于在 Yii2 中不同应用程序的角色检查方式不同,要正常运行,您需要创建自己的组件来启用/禁用您的应用程序,并在其中编写所有检查访问的方法。
例如
<?php namespace app\components\statusApp; use ale10257\yii2MaintenanceMode\AppStatusMode; use Yii; class StatusApp extends AppStatusMode { /** @var string */ public $commandPath = __DIR__; protected function checkRoot() { $app = Yii::$app; if (!$app->user->isGuest) { if ($app->user->identity->isRoot()) { $this->enabled = true; } } } protected function filtering() { $this->checkRoot(); parent::filtering(); } }
重要:公共变量 public $commandPath = __DIR__;
定义了记录应用程序启用/禁用文件的目录。该目录必须可写。
重要:所有检查方法都必须在 filtering
方法中调用。例如,在此示例中,如果用户具有 Root 角色,则应用程序将启用 $this->enabled = true;
选项
'maintenanceMode' => [ // Page title default 'title' => 'Site temporarily unavailable', // Application status 'enabled' => true, // Show message default 'message' => 'Sorry, technical work in progress', // Allowed roles 'roles' => [], // Allowed IP addresses example: '127.0.0.1' 'ips' => [], // HTTP Status Code 'statusCode' => 503, //Retry-After example: header 120 or Wed, 21 Oct 2015 07:28:00 GMT 'retryAfter' ],
如果您初始化 'roles' => [admin, role1, role2]
,则需要在您的组件中自行实现该方法
protected function checkRoles() { // your check }
要使用组件,需要将以下内容添加到 Web 应用程序的配置文件中
'bootstrap' => [ ... 'ale10257\yii2MaintenanceMode\CheckStatus' ... ], ... 'components' => [ ... 'appStatusMode' => [ 'class' => 'app\components\statusApp\StatusApp', // ваш компонент ], ... ],
从控制台启用/禁用应用程序
将以下内容添加到控制台应用程序的配置文件中
'bootstrap' => [ 'log', 'appStatusMode' ], ... 'components' => [ ... 'appStatusMode' => [ 'class' => 'app\components\statusApp\StatusApp', // ваш компонент ], ... ],
修改配置文件后,可以使用命令启用/禁用应用程序
php yii app-status/enable php yii app-status/disable 'Title page' 'Your message'
默认 标题页面 = '网站暂时不可用', 您的消息 = '抱歉,正在进行技术工作'
因此,可以不带参数调用应用程序禁用命令
php yii app-status/disable
从应用程序管理面板启用/禁用应用程序
在控制器中调用以下方法
\Yii->$app->appStatusMode->enable(); \Yii->$app->appStatusMode->disable('Title page', 'Your message'); // можно вызывать без параметров