最近开始使用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版本。
答案 0 :(得分:2)
获取模板库,我个人更喜欢使用Colin Williams或Phil 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的方法。