Pra*_*tha 2 templates codeigniter
有没有办法在不调用$this->load->view('header')或$this->load->view('footer')在每个控制器中加载视图'header'/'footer' ?也许一个模板可以在每个视图中使用?
以下是一些简单的方法来帮助您入门:
class Template {
function load($view)
{
$CI = &get_instance();
$CI->load->view('header');
$CI->load->view($view);
$CI->load->view('footer');
}
}
Run Code Online (Sandbox Code Playgroud)
控制器中的用法:
$this->template->load('my_view');
Run Code Online (Sandbox Code Playgroud)
<!-- views/master.php -->
<html>
<header>Your header</header>
<?php $this->load->view($view, $data); ?>
<footer>Your footer</footer>
</html>
Run Code Online (Sandbox Code Playgroud)
在控制器中:
$this->load->view('master', array(
'view' => 'my-view-file',
'data' => $some_data
));
Run Code Online (Sandbox Code Playgroud)
我更喜欢Template类方法,因为很容易添加方法来附加模板区域,加载javascript文件以及其他任何你需要的东西.我也更喜欢根据被调用的方法自动选择视图文件.像这样的东西:
if ( ! isset($view_file)) {
$view_file = $CI->router->fetch_class().'/'.$CI->router->fetch_method();
}
Run Code Online (Sandbox Code Playgroud)
views/users/index.php如果控制器是Users和方法,这将加载index.