我在codeigniter中使用codeigniter(模板)库。我总是在每个函数中重复模板库代码。你会帮我减少代码吗?
public function index(){
//Load View in template file
$this->template->title('Contacts')
->set_layout($this->admin_home_layout)
->set_partial('header', 'admin/admin_share/admin_header')
->set_partial('sidebar', 'admin/admin_share/admin_sidebar')
->set_partial('footer', 'admin/admin_share/admin_footer')
->set_partial('hidenbar', 'admin/admin_share/admin_hidenbar')
->build('admin/admin_home');
}
我在每个功能中使用这4行。我如何在一个控制器中使用一次以及如何进入功能。
->set_partial('header', 'admin/admin_share/admin_header')
->set_partial('sidebar', 'admin/admin_share/admin_sidebar')
->set_partial('footer', 'admin/admin_share/admin_footer')
->set_partial('hidenbar', 'admin/admin_share/admin_hidenbar')
答案 0 :(得分:0)
你可以在构造函数中设置它们:
public function __construct() {
parent::__construct();
//Do your stuf here
}
或者你可以为它创建一个函数:
function set_partials() {
$this->template->set_partial('header', 'admin/admin_share/admin_header')
->set_partial('sidebar', 'admin/admin_share/admin_sidebar')
->set_partial('footer', 'admin/admin_share/admin_footer')
->set_partial('hidenbar', 'admin/admin_share/admin_hidenbar')
}
在第二种情况下,您的索引将如下所示:
public function index(){
//Load View in template file
$this->template->title('Contacts')
->set_layout($this->admin_home_layout);
$this->set_partials();
$this->template->build('admin/admin_home');
}
答案 1 :(得分:0)
我建议使用不同的逻辑,只为这样的部分提供自定义数组:
protected $partials = [
'header' => 'admin/admin_share/admin_header',
'sidebar' => 'admin/admin_share/admin_sidebar',
'footer' => 'admin/admin_share/admin_footer',
'hidenbar' => 'admin/admin_share/admin_hidenbar'
];
并使用此函数构建布局
public function build_layout()
{
$this->template->title('Contacts')->set_layout($this->admin_home_layout);
foreach($this->partials as $k => $partial){
$this->template->set_partial($k,$partial);
}
$this->template->build('admin/admin_home');
}
答案 2 :(得分:0)
这就是我这样做的方法(适用于PHP中任何具有类似渲染视图方式的框架):
假设控制器看起来像这样:
<?php
class AdminController extends BaseController{
public function viewData($id){
// do something
$this->render('something static 1');
$this->render('customview');
$this->render('something static 2');
$this->render('something static 3');
}
}
?>
我要做的是创建一个基本控制器来执行此渲染任务(以及更多重复的东西):
<?php
class MyBaseController extends BaseController{
protected function renderAll($param){
if(empty($param)){
return false;
}
$this->render('something static 1');
$this->render($param);
$this->render('something static 2');
$this->render('something static 3');
return true;
}
}
?>
完成此操作后,我将在所有控制器中继承新创建的控制器,例如:
<?php
class AdminController extends MyBaseController{
public function viewData($id){
// do something
$this->renderAll('customview');
}
}
?>
您可以在任何想要的控制器操作中重复使用它,只需继承自定义基本控制器类。