Codeigniter和大局

时间:2011-01-30 05:35:44

标签: php codeigniter templates

最近开始使用Codeigniter并完成了大部分教程。我想将一个小的PHP / MySQL网站转换为完全在CI框架上运行。代码是四年,用PHP4编写,很乱。我不介意重写所有内容。

我遇到的问题是找到解决此问题的“正确”解决方案。我想尽可能保持代码为OOP / PHP5,并尽可能保持干净。该网站有五个六个主要组成部分安排到DIV。两个堆叠形成一个中间列,一个左,一个右,一个标题/菜单,以及一个动态填充的Fancybox。当前的index.php只调用header.php,然后继续<div class="class1"><include ('box1.php')</div>,依此类推。

我见过的codeigniter示例在每个模板文件上使用$this->load->view('header')和页脚来设置结构。这似乎是处理标题,加载CSS文件等的冗余和混乱方式。

获取这些控制器和关联视图的正确方法是什么?如果你愿意的话,'包装器'的codeigniter版本。

1 个答案:

答案 0 :(得分:2)

获取模板库,我个人更喜欢使用Colin WilliamsPhil Sturgeons

实质上,你做的是这样的事情:(假设“布局”是你的HTML模板)

layout.php(查看)

<html>
<head>
  <title><?=$title;?></title>
  <?=$metaData;?>
</head>
<body>
  <div id="left">
    <?=$leftContent;?>
  </div>
  <div id="main">
    <?=$main;?>
  </div>
</body>
</html>

然后在你的控制器中:

site.php(控制器)

class Site extends Controller {

  function __construct()
  {
      $this->load->library('template');
      $this->template->set_layout('layout');
  }

  function index()
  {
      $this->template->write_region('title', 'This is my title');
      $data['somedata'] = 'foo'
      $this->template->write_region('main', 'My content', $data);
      $this->template->render();
  }
}

这会将您的数据输出到您的模板,而无需每次都有加载视图等。

我的语法略有不同,因此请检查库特定的文档以获取正确的代码,但模板库是进行imo的方法。