ASP.NET MVC母版页和内容区域的CodeIgniter等效项?

问题描述

| 几年前,我使用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视图引擎来检索文件时,可以在包含过程中将诸如页面标题之类的变量传递给文件,