Yii2的全拦截路由用于网站整体维护catchAll

  •   
  • 5672
  • PHP
  • 0
  • super_dodo
  • 2017/05/05

当网站需要维护的时候,这个时候我们就需要向用户抛出一个维护的页面,方便提醒用户,有很多方法,此处Yii2已经有了一个很好的idea就是在配置文件中增加一条记录即可。

catchAll 路由(全拦截路由)

有时候,你会想要将你的 Web 应用临时调整到维护模式,所有的请求下都会显示相同的信息页。当然,要实现这一点有很多种方法。这里面最简单快捷的方法就是在应用配置中设置下 yii\web\Application::catchAll 属性:

//web.php这个配置文件的局部

$params = require(__DIR__ . '/params.php');

$config = [
	'id' => 'basic',
	'basePath' => dirname(__DIR__),
	'bootstrap' => ['log'],
	'catchAll' => ['site/offline'],			//这里是重点
	'components' => [
		'request' => [
			'cookieValidationKey' => 'qyuTY-mapnIbureBY_8SMWAG3_rn4S8u',
		],
		'cache' => [
			'class' => 'yii\caching\FileCache',
		],
		'db' => require(__DIR__ . '/db.php'),
	],

	'params' => $params,
];

return $config;

catchAll 属性需要传入一个数组做参数,该数组的第一个元素为路由,剩下的元素会(以名值对的形式)指定绑定于该操作的各个参数。

当设置了 catchAll 属性时,它会替换掉所有从输入的请求中解析出来的路由。如果是上文的这种设置,用于处理所有传入请求的操作都会是相同的 site/offline。

Learn young, learn fair.学习趁年少,而且要学好。