如何简化CI中的视图冗余调用

时间:2016-04-01 15:40:58

标签: php html codeigniter

在我的应用程序中,页眉和页脚部分几乎总是静态的。中间部分包含我加载到视图的动态数据,然后将其附加到页眉和页脚视图。

示例:

view / header:

<html>
<head><titile>My App</title></head>
<body>

查看/页脚

</body>
</html>

控制器

public function page1($contents){

$page  = $this->load->view('header',null,true);
$page .= '<div>' . $contents . '</div>';
$page .= $this->load->view('footer', null, true);

echo $page;
}

上面的示例可能看起来过于简单,但是当我的静态视图不仅仅是页眉和页脚时,每当我需要构建视图时,代码就变得非常冗余。有没有办法在函数中简化这个? (最好在图书馆中创建一个类)

1 个答案:

答案 0 :(得分:0)

你可以在CORE中创建一个MY_controller扩展并在那里定义一个函数,但是如果你喜欢它在LIBRARY中,那么创建一个这样的类:

Class Viewer(){

     public function __construct(){
          // CREATE AN INSTANCE OF THE CONTROLLER CLASS LIBRARY
          $this->CI =& get_instance(); 
    }


     // Where $content is your dynamic content from another view; 
     public function final_view($content){
        $final_view  =  $this->CI->load->view('header',null,true);
        $final_view .=  $content;
        $final_view .=  $this->CI->load->view('footer',null,true);

        return $final_view;
       }
}

在您的控制器上,重新使用上面的代码:(假设您已自动加载库查看器auto-loading in CodeIgniter);

public function page1($contents){

     $dynamic_content = '<div>' . $contents . '</div>';
     echo $this->viewer->final_view($dynamic_content);
}

在不同的功能上,您可以执行相同的操作

public function page2($more_contents){

     $dynamic_content = '<h1>' . $more_contents . '</h1>';
     echo $this->viewer->final_view($dynamic_content);
}

如果这有帮助,请告诉我!