2013-02-11 69 views
1

我想用一个自定义负载>,一旦创建将加载一组视图的页面视图。它具有与$ this-> load-> view()相同的功能,但也可以预加载其他视图。我怎么写这个并使它工作?感谢定制MY_Loader加载组的意见

<?php 

class MY_Loader extends CI_Loader 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    function admin_view($load_page, $vars=array()) 
    { 
     $this->load->view('admin/header'); 
     $this->load->view($load_page); 
     $this->load->view('admin/footer'); 
    } 

    function members_view() 
    { 
     //same purpose as admin view 
    } 

    function public_view() 
    { 
     //same purpose as admin view 
    } 


} 
+0

请参阅(http://stackoverflow.com/questions/9540576/header-and-footer-in-codeigniter/9540985#9540985)我的[以前的答案。 – 2013-02-11 06:24:57

回答

0

这看起来不错,只不过你并不需要调用$this->load,因为你已经“中的” CI_Loader(通过您的分机),所以你可能只是尝试:

function admin_view($load_page, $vars=array()) 
{ 
    $this->view('admin/header'); 
    $this->view($load_page); 
    $this->view('admin/footer'); 
} 

这意味着您可以访问CI_Loaderview方法,因为您已将其扩展到您的班级。

+0

我想知道什么时候在我的控制器中写入$ this-> load-> admin_view()代码点火器如何决定调用相应类的正确方法? @swatkins – ahmad05 2013-11-22 07:28:07

+0

这是CI如何让您扩展CI核心和基本类继承的混合体。通过创建一个'MY_Loader'类并将它放在正确的位置,CI将加载它而不是它的'CI_Loader'类 - 并且因为'MY_Loader'扩展了'CI_Loader' - 所有的方法都可用。所以'$ this-> load'是'MY_Loader'类的一个实例。因此,调用'$ this-> load-> admin_view();'调用'MY_Loader'类的'admin_view'方法。 – swatkins 2013-11-22 16:28:14

+0

非常感谢你,我一直在浪费两三天的时间来弄清楚它是如何工作的......你帮助我的原因 和扩展的加载器类的确切名称是“MY_loader”的权利? – ahmad05 2013-11-25 05:56:36

0

我曾经有过像这样的意见/ _includes一个的template.php:

<?php 
    $this->load->view('_includes/header'); 
    $this->load->view($view); 
    $this->load->view('_includes/footer'); 

所以$视图我想要加载传递throught控制器。例如:

class News extends MY_Controller { 
    public function index() 
    { 
     $data['view'] = 'admin/news/index'; 
     $data['results'] = $this->news_model->get_all); 
     $this->load->view('admin/_includes/template', $data); 
    }