CodeIgniter Dry Navigation

空扰寡人 提交于 2019-12-13 04:43:13

问题


My boss told me make dry navigation dont use repetitive code, for navigation i am trying to extend CI_Controler and with construct load header nav, body, footer files.

My question is when i create new controller and when i try to load different view files, how to achive that???

my extended 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');   

    }
}

and later when i am creating new controler how to load diffrent view files

class Pages extends MY_Controller
{
    public function __construct() {


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

    }
}

回答1:


You can create a template library yourself. For example :

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);
}

In main template, just echo $content




回答2:


If I understand your question, you're trying to achieve a template situation. For this, the best way is to actually call your templates view files within a primary page view. What I mean is your controller function (not the constructor, an actual class function representing a page) should call a primary view such as

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

and within that file, you call

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

then your content and then

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

You would then repeat the process for page 2 where in your controller's page2 function, you would call

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

and your page2 view file is almost identical to page1 except you use your page 2 content in that area.

You could even use a single template view file and pass it a $content variable (which obviously changes per page) and call

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


来源:https://stackoverflow.com/questions/25788447/codeigniter-dry-navigation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!