繼承控制器Frontend中添加:
application/common/contorller/Frontend.php
/**
* 自定義模板
* @var string
*/
protected $layouts = [];
public function _initialize(){
// 如果有使用模板布局
$this->layout = $this->setLayout();
if ($this->layout) {
$this->view->engine->layout('layout/' . $this->layout);
}
}
//多模板匹配
public function getLayout(){
if (!is_array($this->layouts)||empty($this->layouts)){
return $this->layout;
}
$request= Request::instance();
$action = $request->action();
foreach ($this->layouts as $k=>$v){
if (in_array($action, $v)){
return $k;
}
}
return $this->layout;
}
//自定義加載模塊
public function setLayout(){
if (!is_array($this->layouts)||empty($this->layouts)){
return $this->layout;
}
$request= Request::instance();
$action = $request->action();
foreach ($this->layouts as $k=>$v){
if (in_array($action, $v)){
return $k;
}
}
return $this->layout;
}
自定義控制器(例):
application/index/contorller/User.php
class User extends Frontend{
//設(shè)置默認(rèn)模板墨状,不需要?jiǎng)t留空肾砂,僅加載自定義的模板
protected $layout = 'default';
//key:模板名稱 value:對(duì)應(yīng)使用該模板的所有方法名
protected $layouts = ['a'=>['index'],'b'=>['profile','changepwd']];
}