2011-01-30 67 views
0

最近开始使用Codeigniter,并已通过大部分教程。我想将一个小型的PHP/MySQL网站转换为完全在CI框架上运行。该代码已有四年历史,以PHP4编写,并且一塌糊涂。我不介意重写所有这些。Codeigniter和大图片

我遇到的问题是找到这个问题的'正确的'解决方案。我希望尽可能保持代码为OOP/PHP5,并且尽可能干净。该网站有五个六个主要部分安排在DIV中。两个堆栈形成一个中心列,一个左边,一个右边,一个头/菜单,以及一个动态填充Fancybox。目前的index.php只是调用header.php,然后继续到<div class="class1"><include ('box1.php')</div>等等。

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

什么是正确的方式来获取这些控制器和相关视图加载?如果您愿意,可以使用'wrapper'的codeigniter版本。

回答

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。

+0

我继续研究这个主题,并将其缩小到使用模板库,或从另一个视图脚本调用视图脚本,这似乎有点愚蠢。谢谢! – 2011-01-30 16:10:58