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

时间:2011-05-28 01:38:34

标签: asp.net-mvc codeigniter templates

我几年前使用过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放入ContentAreas之一是一件非常痛苦的事情 - 它可能是字符串连接或同样令人讨厌的东西,几乎没有任何IDE中的HTML intellisense。
  • 使用模板库 - 我没有找到一个基本上没有如上所述工作的文件

现在,我之前没有使用过CodeIgniter,并且即将启动一个大型PHP项目,所以想要在实际开始工作之前确保它是正确的工具。我错过了一些明显的东西,或者这个模板功能难以复制吗?

编辑:测试的图书馆:

2 个答案:

答案 0 :(得分:2)

如果您对如何构建页面有很好的了解,那么您可以编写一组函数来在MY_Controller.php文件或库中处理它。

所以你可以有一个调用

的例程

$这 - &GT; mypagetemplates();

从类的属性中调用数据,例如$ this-&gt; page-&gt; title;

我将数据分成

时将数据拆分

$这 - &GT; PAGE-&GT;头, $这 - &GT; PAGE-&GT;头, $这 - &GT; PAGE-&gt;内容, $这 - &GT; PAGE-&GT;一边 $这 - &GT; PAGE-&GT;页脚

这与我们在90%的项目中使用的HTML5部分相对应

我的$ this-&gt; mypagetemplates()函数(或方法,如果您愿意)可以采用多个参数并调用各种视图,例如:

$ contentview ='shop / products'; $ asideview ='shop / basket';

然后,如果填充,则调用

If ($asideview) {
    $this->load->view($asideview, $this->page->aside);
}

总体而言,我认为不要在我们新手的框架上设计您有史以来最大的项目。先玩。

答案 1 :(得分:0)

我最终创建了3个代表以下内容的文件

OpenHeader:

<html>
    <head>
        <Head Stuff/>

OpenBody:

    </head>
    <body>
        <html>
            <Templating Stuff>

关闭:

            </Templating Stuff>
        </html>
    </body>
</html>

然后修改我的观点以在适当的时间包括这三个。

它不够优雅但灵活且功能强大所以它现在可以做 - 特别是因为如果我使用CodeIgniter视图引擎来检索它们,我可以在包含期间将变量(例如页面标题)传递到文件中