我的老板告诉我干燥导航不要使用重复代码,导航我试图扩展CI_Controler并使用构造加载头导航,正文,页脚文件。
我的问题是当我创建新的控制器时,当我尝试加载不同的视图文件时,如何实现这一点???
我的扩展控制器
class MY_Controller extends CI_Controller
{
public function __construct() {
parent::__construct();
$this->load->view('view_header');
$this->load->view('includes/nav_home');
$this->load->view('view_home');
$this->load->view('view_footer');
}
}
以后我正在创建新的控制器如何加载不同的视图文件
class Pages extends MY_Controller
{
public function __construct() {
$this->load->view('includes/nav_new_view');
$
}
}
答案 0 :(得分:1)
您可以自己创建模板库。例如:
function template($view_name,$view_data){
//below will return html string from view name
$data['content'] = $this->load->view($view_name,$view_data,true)
//load main template view and pass the html string to main template
$this->load->view('main_template',$data);
}
在主模板中,只需回显$ content
答案 1 :(得分:0)
如果我理解您的问题,那么您正在尝试实现模板情况。为此,最好的方法是在主页面视图中实际调用模板视图文件。我的意思是你的控制器函数(不是构造函数,表示页面的实际类函数)应该调用主视图,如
$this->load->view('page1', $this->data);
并在该文件中,您致电
$this->load->view('nav', $this->data);
然后是你的内容然后
$this->load->view('footer', $this->data);
然后,您将重复第2页的过程,在控制器的page2功能中,您可以调用
$this->load->view('page2', $this->data);
并且您的page2视图文件几乎与page1相同,只是您在该区域中使用了第2页内容。
您甚至可以使用单个模板视图文件并将其传递给$content
变量(显然每页更改)并调用
$this->load->view('template', $this->data);