代码之家  ›  专栏  ›  技术社区  ›  kilrizzy

获取CodeIgniter的挂起-模板化/加载视图

  •  1
  • kilrizzy  · 技术社区  · 15 年前

    $this->load->view('header');
    $this->load->view('navigation');
    $this->load->view('sidenav_open');
    $this->load->view('blocks/userinfo');
    $this->load->view('blocks/stats');
    $this->load->view('sidenav_close');
    $this->load->view('content',$data);
    $this->load->view('footer');
    

    2 回复  |  直到 15 年前
        1
  •  9
  •   kevtrout    15 年前

    可以从视图文件中加载视图。例如,考虑一个名为 page_template.php

    <html>
    <body>
      <div id = "header">
          <?php $this->load->view('header');?>
          <?php $this->load->veiw('navigation');?>
      </div>
      <div id = "sidenav">
         <?php $this->load->view('sidenav');?>
      </div>
      <div id = "content">
         <?php echo $content;?>
       </div>
    
      <div id = "footer">
          <?php $this->load->view('footer');?>
     </body>
     </html>
    

    利用codeigniter在控制器中将视图作为变量返回的功能加载更动态的区域:

    $template['content'] = $this->load->view('content',$data,TRUE);
    $this->load->view('page_template',$template);
    

    通过向load函数传递TRUE,CI将从视图返回数据,而不是输出到屏幕。

    我用了两种方法,包括每个控制器方法中的每一个糟糕的视图,以及使用加载子视图和动态区域的页面模板,到目前为止,第二种方法让我更开心。

        2
  •  1
  •   Sparky    13 年前

    从视图中加载视图可能会导致混淆。

    扩展控制器类隐藏了来自该方法的许多复杂性,但仍然利用通过在每个页面加载中呈现一次视图来生成公共视图(页脚、页眉、导航条等)的思想。

    具体来说,请参阅CI用户指南和wiki以获取对 -您可以通过在./libraries目录中创建MY_Controller.php文件来扩展它。

    在那里,还可以使用第三个参数调用视图片段= 的特点 load->view() 打电话来。你把这些装进去 $this->data $this->data['footer'] . 在各种控制器中,继续将视图数据添加到 . 在您的视图中-我通常使用一个模板,除了框架HTML和一些基本CSS之外,它只做很少的事情,然后将整个页眉、页脚、导航和主要内容块作为变量从 $this->数据

    我有一个关于简化视图部分的生成和显示的wiki页面,正如您在这里所做的,使用我的控制器:

    https://github.com/EllisLab/CodeIgniter/wiki/Header-and-Footer-and-Menu-on-every-page---jedd