开发一个企业网站经常需要读取一些页面通用的数据 ,比如企业网站的名称、公司地址、电话等等通用的数据。最笨的办法是在每一个控制器的方法内调用对应模型的方法。例如
//文章详情
public function article(){
$class = action('Blog/classlist');
$this->assign('class',$class);
.....
}
这样会造成同样的代码在很多方法内反复撰写。
Thinkphp5.1中有个前置操作属性beforeActionList,我们可以指定方法内的特定方法在执行前先执行指定方法。例如对于网站调用分类的通用功能可以放到BaseAction内
$beforeActionList = [
'大家都要先执行的方法名称1',
'方法1' => ['only'=>'index,blog']; //只有index,blog执行方法1
'方法2' => ['except'=>'index']; //除index外全部要先执行方法1
];