多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
tp5.1中取消了系统常量的设置,很多模板公用的信息(网站标题、静态文件目录)无法通过以前的方式来渲染。本文主要介绍利用后置中间件去实现一些公用信息的渲染。 首先,我们配置好中间件,并注册一个后置中间件,具体介绍见[中间件 · ThinkPHP5.1完全开发手册 · 看云](https://www.kancloud.cn/manual/thinkphp5_1/564279) 我注册的后置中间件为`After`,代码如下: ``` namespace app\http\middleware; class After { public function handle($request, \Closure $next) { $response = $next($request); // 添加中间件执行代码 app('app\common\lib\AppConst'); return $response; } } ``` 此处的`app\common\lib\AppConst`即我们自定义的一个执行公用信息渲染的类,代码如下 ``` use app\common\model\AppConfig; use think\facade\Cache; use think\facade\View; class AppConst { protected $defaultAssign = []; public function __construct() { $this->getConfig(); $this->getActionConfig(); View::share($this->defaultAssign); } /** * 获取应用基础配置,如网站名称、静态文件目录等 * @return $this */ protected function getConfig() { $config = Cache::remember('app_config',function(){ return AppConfig::defaultAssign()->select(); },0); $configAssign = []; foreach ($config as $value){ $configAssign['app_config'][$value['config_name']] = $value['config_value']; } $this->defaultAssign = array_merge($this->defaultAssign,$configAssign); return $this; } protected function getActionConfig() { //获取当前请求action的信息 } } ``` 这样,我们就实现了通过后置中间件的方式自动渲染一些公用信息。这样的设计是不是既优雅又方便。