2014-09-11 111 views
0

我的老板告诉我做干燥导航不使用重复代码,导航我想扩展CI_Controler和构造加载头导航,正文,页脚文件。CodeIgniter干燥导航

我的问题是当我创建新的控制器,当我尝试加载不同的视图文件,如何实现?

我伸出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'); 

    } 
} 

后来当我创造新的CONTROLER如何加载不同势视图文件

class Pages extends MY_Controller 
{ 
    public function __construct() { 


     $this->load->view('includes/nav_new_view'); 
     $ 

    } 
} 
+0

什么是 “干导航”? – twistedpixel 2014-09-11 14:23:22

+0

你真的想实现什么? – CodeSlayer 2014-09-12 05:24:40

回答

0

如果我理解你的问题,你想达到一个模板情况。为此,最好的方法是在主页面视图中实际调用模板视图文件。我的意思是你的控制器功能(不是构造函数,代表一个页面的实际类的函数)应该调用主视点如

$this->load->view('page1', $this->data); 

和文件中,你叫

$this->load->view('nav', $this->data); 

那么你的内容,然后

$this->load->view('footer', $this->data); 

你会然后重复上述过程2页面,在你的控制器的第2页功能,您将调用

$this->load->view('page2', $this->data); 

和您的page2视图文件几乎与page1完全相同,除非您在该区域使用您的第2页内容。

你甚至可以使用单个模板视图文件,并将它传递一个$content变量(这显然每页改变),并调用

$this->load->view('template', $this->data); 
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); 
} 

在主模板,只是回声$内容