我正在寻找一种简单的方法来显示相同的页眉和页脚,同时能够切换出主要内容区域。我不确定如何使用MVC实现这一目标。
答案 0 :(得分:10)
您可以创建主视图。
<强>视图/ master.php 强>
$this->load->view('header');
echo $content;
$this->load->view('footer');
然后使用一种方法创建一个基本控制器来呈现主视图。子视图的内容将被加载并传递到主视图。
<强>库/ MY_Controller.php 强>
class MY_Controller extends Controller
{
public function __construct()
{
parent::__construct();
}
public function master_view($content_view, $data)
{
$data['content'] = $this->load->view($content_view, $data, true);
$this->load->view('master', $data);
}
}
然后扩展此基本控制器并从您的操作方法调用基本控制器的方法。
<强>控制器/ items.php 强>
class Items extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$data['items'] = $this->item_model->get_items();
$this->master_view('items/index', $data);
}
}
它往往比在每个视图中加载页眉和页脚更加干燥。
答案 1 :(得分:1)
只需为标题创建一个视图,然后为页脚创建一个视图,并在每个页面的顶部和底部将它们吐出。或者,创建模板视图并加载它,然后获取其他视图并将它们注入模板的内容区域。无论哪种方式都可以让你到达你想去的地方。如果希望它自动发生,可以在控制器的构造函数中创建模板视图,并将其保存到控制器类的成员中。然后使用它,例如,$ this-&gt;模板将是模板视图。
答案 2 :(得分:0)
尝试Modular Seperation:http://codeigniter.com/forums/viewthread/121820/
答案 3 :(得分:0)
与上面类似,我这样做:
$this->data['content']='your_content_view';
$this->load->vars($this->data);
$this->load->view('template');
然后在模板视图中:
$this->load->view('header');
$this->load->view($content);
$this->load->view('footer');
视图可以加载其他视图,因此模板视图会加载标题视图,然后加载您在内容中指定的视图,然后加载页脚视图。
使用此提示,您可以将侧边栏视图加载到内容等中