Php 代码点火器中的嵌套控制器

Php 代码点火器中的嵌套控制器,php,codeigniter,Php,Codeigniter,我使用的CI类扩展了核心CI_加载器,允许我在模板中加载模板: $this->load->view('wrapper','category',$data); 这会将类别为的模板加载到主模板包装器中 这意味着在控制器中,我必须确保始终填充需要输入包装器视图和内部视图的任何数据。因此,我所有的类都包含了一些方法,这些方法需要引入动态导航和包装视图中显示的类别……然后在生成内部视图的控制器中,我必须调用这些方法并将它们指定为输出 我的控制器最终可能会如下所示: public functi

我使用的CI类扩展了核心CI_加载器,允许我在模板中加载模板:

$this->load->view('wrapper','category',$data);
这会将类别为的模板加载到主模板包装器中

这意味着在控制器中,我必须确保始终填充需要输入包装器视图和内部视图的任何数据。因此,我所有的类都包含了一些方法,这些方法需要引入动态导航和包装视图中显示的类别……然后在生成内部视图的控制器中,我必须调用这些方法并将它们指定为输出

我的控制器最终可能会如下所示:

public function product_listing($store,$category,$product_slug) {
    //These are all needed to populate the wrapper view
    $data['categories'] = $this->get_categories();
    $data['navigation'] = $this->navigation();
    $data['cart'] = $this->get_cart();
    $data['store'] = $store;
    //Then this is needed for the inner view        
    $data['products'] = $this->model_products>get_product($store,$category,$product_slug);
    $data['title'] = $data['products'][0]->product_name;
}

我的问题是,有没有办法将这些东西加载到某种包装类中,以避免用包装视图所需的方法(以及从上述其他方法中调用这些方法)污染我的每个类。

为什么不在控制器的构造函数中完成这一切,将结果存储在类成员变量(数组)中,然后在控制器的每个函数中执行类似$data['navigation']=$this->navigation?通过这种方式,所有导航内容都可以从$navigation['key']在视图中使用。默认情况下,您可以从视图内部创建$This->load->view,这对模板引擎来说是否足够?这样,控制器只需将数据传递给一个视图(主视图或“模板”视图),该视图将根据需要将数据传递给其“子视图”