3

我是 codeigniter 的新手,我想知道如何使用自定义模板来呈现常见页面,如页眉、页脚、侧面板等。连同页面的数据。

class Template {

function show($view)
{
    <?php $this->load->view('header'); ?>
    <?php $this->load->view($view,$data); ?>
    <?php $this->load->view('footer',$data); ?>
}
} 

这是我的意思的示例。任何人都可以帮忙吗?

4

4 回答 4

2

不要在一个控制器函数中调用 3 个视图,因为它们会限制你。而是只调用一个视图,该视图调用 3 个其他视图。

这是你的计划:

$this->load->view('header');
$this->load->view($view,$data);
$this->load->view('footer',$data);

问题是您的页眉视图将打开一些 HTML 标签,这些标签将在页脚视图中关闭,例如div#container. 这将使您的代码难以辨认。

我的建议是:

$main_data['a']=...
$main_data['b']=...
$main_data['c']=...
$this->general_view('myview',$main_data);

protected function general_view($main_view,$main_data)
{
  $data['main_data']=$main_data;
  $data['main_view']=$main_view;
  $this->load->view('general_view',$data);
}

内部总体视图:

<HTML>
  <HEAD>
    ....
  </HEAD>
  <BODY>
    <?$this->load->view('header');?>
    <div id="container">
      <?$this->load->view($main_view,$main_data);?>
    </div>
    <?$this->load->view('footer',$data);?>
  </BODY>
<HTML>
于 2013-09-05T15:32:02.557 回答
0

您可以扩展 abstractClass 以获取层次结构索引:

抽象类:

class AbstractController extends CI_Controller
{  
     var $_template;

     function __construct()
     {
        parent::__construct();
     }

     function index()
     {
        $this->load->view('header');
        $this->load->view($this->_template);
        $this->load->view('footer',$data);
     }
} 

家庭控制器:

class Home extends AbstractController
{
   function __construct()
   {
        parent::__construct();

        $this->_template = "home/home_view";
   }
}

当您访问 site.com/home 时,您将覆盖 $this->_template 并使用主视图路径,并从抽象控制器调用 index()

好运

于 2013-09-05T12:42:13.563 回答
0

使用模板库,这是一个很好的:Stencil,或者使用:这种方式

于 2013-09-05T12:27:26.460 回答
0

是的,您可以,只需在名为 masterpage.php 的视图中添加一个文件,然后使用以下代码:

<html>
<head>
</head>
<body>
<div class='menu'>My Menu here</div>
<div class='content'>
<?php echo $content; ?>
</div>
</body>
</html>

那么你的观点应该是

<?php
  ob_start();
?>
content

<?php
  $content= ob_get_contents(); 
  ob_end_clean(); 
  include("application/views/masterpage.php");
?>

我希望它有所帮助。

于 2013-09-05T12:30:17.860 回答