CodeIgniter - 将函数附加到要在所有页面上调用的View

时间:2016-04-18 15:42:29

标签: php codeigniter

我目前正在使用codeigniter开展电子商务。我已经完成了几乎所有的视图,现在我开始编码(控制器和模型)。 对于登录,我的ideia在"顶视图"。

上设置其形式

问题是我必须打电话给&#34;顶视图&#34;在每个控制器中,每次调用它时都配置form_validation。 有一个正确的方法来处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

有很多不同的方法可以解决如何处理在许多不同页面上加载的常见html片段的问题。

一种解决方案是为每个控制器添加一个辅助函数,如下面显示的render_page()函数。 [注意:任何要加载的视图中所需的任何动态数据都应通过$ data参数传递。]

protected function render_page($main_view, $data=null){
  $this->load->view('top_view', $data);
  $this->load->view('menu_view');
  if(isset($main_view)){
      $this->load->view($main_view);
  }
  $this->load->view('footer_view');
}

在同一个控制器的其他地方

public function index(){
  //do stuff including setting $data as needed
  $this->render_page('some_view', $data);
} 

此方法的问题是您需要在每个控制器中定义render_page()。要解决此问题,请在以类似方式工作的自定义库(类)中使用render_page()想法。然后,您自动加载该库并在任何所需的控制器中使用其render_page()方法。

如果您创建了这样的库并将其命名为Viewmaster,那么您将在控制器中使用它,如下所示(假设它是自动加载的)

public function index(){
   //do stuff including setting $data as needed
   $this->viewmaster->render_page("some_view", $data);
 }

我会留给你找出Viewmaster类的实现细节。