3

我开始研究这个话题有几个原因......

1) 减少我的控制器中的重复代码 2) 配置我网站中使用的 3 种主要布局 - 1 列、2 列和 3 列页面 3) 能够有单独的局部视图文件,并根据模板相应地加载它们(主要内容、页眉、页脚和侧边栏)

我已经用谷歌搜索了这个主题,并提出了很少有用户友好文档的示例,我希望得到一些指导。

Sam Stevens 的http://net.tutsplus.com/tutorials/php/an-introduction-to-views-templating-in-codeigniter/很棒……但缺乏为每个模板加载单个视图文件所需的动态性。

Jens Segers 的https://github.com/jenssegers/CodeIgniter-Template-Library只是将我的生活与这个不必要的小部件混淆了。

Phil Sturgeon 的http://philsturgeon.co.uk/blog/2009/12/CodeIgniter-Template-library看起来不错……但是缺少文档和错误使得像我这样的新手很难启动和运行。

威廉概念的http://williamsconcepts.com/ci/codeigniter/libraries/template/index.html似乎是我可以从其他用户那里衡量的最好的 - 但它不是开箱即用的,我关于尝试两次定义标题之类的错误!它只是不适合我。

如果有人可以建议我哪个库(或其他库)最能满足我想要实现的目标,那么我可以将所有的注意力都放在实现和理解它上,而不是在示例之间跳转......

此外,所有这些示例似乎(最初)都已有多年历史(Sam Steven 的酒吧),这让我想知道,是否没有更新或最近的示例可用?

4

3 回答 3

3

一个非常相似的问题被问到哪个模板库最好。我什至会考虑将此标记为重复的问题,但是既然您问“没有更新或更新的示例可用吗? ” - 我会咬一口。

您应该尝试使用Stencil。它于今年发布,有很好的文档记录,我在所有 CodeIgniter 项目中都使用它(完全披露:我是创建者)。

它的一些特点是:

  1. 轻松设置标题
  2. 简单的布局
  3. 特定于页面的资产(js 和 css,非常适合 jQuery 插件)
  4. 特定于页面的元数据
  5. 大量 HTML5 助手
  6. 将数据绑定到视图的灵活方式
  7. 切片(也称为部分、包含、嵌套视图、元素等)
  8. 切片回调(也称为视图模型,您可以在每次使用切片时执行一段代码)

同样,这是我构建的东西。一切都是为了找到适合工作的工具,您应该研究最适合您的项目的工具。

链接

GitHub | 文档| 演示

于 2013-07-10T15:59:11.153 回答
0

这更像是一个基于意见的问题,而不是一个可以实际回答的问题。没有最好的工具,只有适合这项工作的不同工具。首先我要说的是,你可能只看到多年的 CI 库的原因是因为许多已经跳到使用命名空间和更新 php 5.3 特性的更新框架。这并不是说 CI 不好,我仍然在一些项目中使用它。

Phil Sturgeon 曾经是 CI 的核心贡献者,但如果我没记错的话,现在已经转向 Laravel。(Laravel 也是我一直在迁移的)

Tutsplus 是一个很棒的网站,里面有很多很棒的信息。事实上,就在最近他们为 CI 开设了一门新的高级课程:https ://tutsplus.com/course/codeigniter-best-practices/

除此之外,我不知道其他两个,也不能给你任何信息。我,我不使用任何模板库,只是给每个局部视图一个对象中的名称/索引,如果名称存在,那么我调用局部视图并使用对象中具有相同名称的属性(标题,css 、脚本、内容、页脚等)。然后,您将拥有一个充当 .net 母版页的模板视图,您只需将部分视图注入其中。你也可以通过创建一个钩子来做到这一点。也许谷歌搜索 CI 模板挂钩也是如此。

于 2013-07-10T15:40:14.853 回答
0

All the examples of this page are not maintained. For templating in CodeIgniter, you can use the CI Template Parser Class, but is very lean.

Otherwise, you can use Smarty or Twig, they have a very powerful feature for partial views: template inheritance.

Template inheritance is an approach to managing templates that resembles object-oriented programming techniques. Instead of the traditional use of {include ...} tags to manage parts of templates, you can inherit the contents of one template to another (like extending a class) and change blocks of content therein (like overriding methods of a class.) This keeps template management minimal and efficient, since each template only contains the differences from the template it extends. Template inheritance allows you to build a base "skeleton" template that contains all the common elements of your site and defines blocks that child templates can override.

于 2015-05-03T18:05:04.257 回答