问题描述
|
几年前,我使用PHP,但此后一直在C#/ VB.Net中进行开发。
在ASP.Net MVC 2中,您可以提供一个定义内容区域的母版页,例如:
<html>
<head>
<title>Overshare | <?=$Title?></title>
<ContentArea name=\"Head\"/>
</head>
<body>
<ContentArea name=\"Body\"/>
</body>
</html>
您的视图将具有以下内容:
<Content name=\"Head\">
<!-- Some Head Content -->
</Content>
<Content name=\"Body\">
<h1>Some Body Here</h1>
</Content>
我似乎无法使用Code Igniter模仿相同的功能。选项似乎是:
手动预设一些关联的变量数组(例如在控制器中),然后将值替换为模板文件-这是很多代码,需要在每个视图中重复,并且不属于控制器。这也意味着将大量的html放到ѭ2之一中是一个真正的痛苦-它要么是字符串连接,要么是同样令人讨厌的东西,几乎没有在任何IDE中出现HTML intellisense的机会。
使用模板库-我还没有找到一个根本无法如上所述工作的模板库
现在,我以前没有使用CodeIgniter,而是要启动一个大型PHP项目,因此在实际开始工作之前,请确保它是正确的工具。我是否遗漏了一些明显的东西,或者此模板功能难以复制?
编辑:已测试的库:
菲尔·斯特金的模板库
CI Smarty
PHXView
解决方法
如果您对页面的构建方式有一个很好的了解,则可以在MY_Controller.php文件或库中编写一组函数来处理它。
所以你可以有一个例程来调用
$ this-> mypagetemplates();
哪个从类的属性中调用数据,例如$ this-> page-> title;
创建数据时将其拆分为
$ this-> page-> head,
$ this-> page-> header,
$ this-> page-> content,
$ this-> page-> aside
$ this-> page-> footer
这与我们90%的项目中使用的HTML5部分相对应
我的$ this-> mypagetemplates()函数(或您喜欢的方法)可以接受多个参数,并因此调用各种视图,例如:
$ contentview = \'商店/产品\';
$ asideview = \'商店/购物篮\';
如果填充,则将其称为
If ($asideview) {
$this->load->view($asideview,$this->page->aside);
}
总体而言,我想说的是,不要在我们刚接触的框架上设计您最大的项目。首先玩。
, 我最终创建了3个代表以下内容的文件
OpenHeader:
<html>
<head>
<Head Stuff/>
OpenBody:
</head>
<body>
<html>
<Templating Stuff>
关:
</Templating Stuff>
</html>
</body>
</html>
然后修改我的观点,以在适当的时候包括这三个观点。
它不雅致,但灵活而强大,因此现在就可以使用-特别是因为如果我使用CodeIgniter视图引擎来检索文件时,可以在包含过程中将诸如页面标题之类的变量传递给文件,