20

一点背景信息
我最近一直在研究几个 PHP 框架,它归结为两个。Zend 框架或 CodeIgniter。

我更喜欢 CodeIgniter,因为它设计简单。它非常简单,而且保持简单。我不喜欢的是弱模板系统。模板系统对我来说很重要,因为我将与另一位设计师合作。能够给他一个好的模板系统是一大优势。

Zend 是第二个选择,因为它内置了更好的模板系统。虽然与 CodeIgniter 相比,Zend 是一个不同的野兽。它强调“模块之间的松散耦合”,但它是一个更大的框架。我不喜欢觉得我有很多东西在我从未使用过的引擎盖下运行。在我看来这是不必要的开销,所以我考虑将模板系统放入 CodeIgniter: Smarty。

问题:将 Smarty 集成到 CodeIgniter 的过程有多容易/难?从我对 CodeIgniter 文档的初步扫描中,我可以看到框架的布局很容易理解,并且我预计不会有任何问题。我想知道是否有人以前使用过它,因此我知道你所经历的任何“陷阱”都会使这变得比它应该或不可能实现的更难。我也想知道这是否是一件好事。CodeIgniter 中的模板系统是否足够正常使用?除了 Smarty,还有其他适合 CodeIgniter 的模板模块吗?Zend 框架我会更好吗?这里有发明轮子吗?

4

6 回答 6

4

很抱歉重新提出一个老问题 - 但没有一个答案被标记为“已接受”。

有一个名为“模板”的库,它可以让您使用几乎任何您想要的模板解析器:

模板 CI 库 - V1.4.1

该语法很容易集成到您的 CI 应用程序和 smarty 集成点。

于 2009-03-06T14:06:27.817 回答
2

有点OT,希望你不要介意...

我是 Zend Framework 用户,我认为值得一提的是,松耦合意味着您不需要包含任何您没有积极使用的文件。希望这可以消除您对不必要开销的担忧。

在最近发布的 ZF 版本中添加了布局内容,它的模板真的很难出错……而且正如 Favio 提到的那样,它是完全可插入的。越用ZF越喜欢;他们做事的方式和我一样!

于 2008-09-11T20:08:17.053 回答
1

我做了一个快速的谷歌搜索,发现以下内容: http: //devcha.blogspot.com/2007/12/smarty-as-template-engine-in-code.html http://codeigniter.com/forums/viewthread/ 67127/

如果设计者对 Smarty 不熟悉,我认为这与使用现有的 CodeIgniter 模板系统几乎相同(实际上一切都交给 PHP)。它还取决于手头项目的复杂性。

您还可以将 Smarty 与 Zend 框架挂钩。它比使用 CodeIgniter 更复杂,但在 ZF 文档中已经有关于如何做到这一点的入门指南。http://framework.zend.com/manual/en/zend.view.scripts.html 加上网上很多教程。

在我看来几乎是一样的,你可以使用纯 PHP 或 Smarty 作为你的模板“引擎”,所以这取决于项目。另外,比较一个有丰富经验并且已经拥有视图助手库(因此她使用纯 PHP)的开发人员与一个对 PHP 一无所知但对 Smarty 有丰富经验的设计师。有时,决策必须基于谁将要做什么。

于 2008-09-03T07:25:32.683 回答
0

似乎没有为这个问题选择答案,也没有提供最新的解决方案来使用最新版本的 Codeigniter (2.0) 和最新版本的 Smarty (3.0.5)。

该库允许您将 Smarty 3 与 Codeigniter 2.0 一起使用,因此您可以使用 Smarty 3 的特定功能,例如模板继承。

http://ilikekillnerds.com/2010/11/using-smarty-3-in-codeigniter-2-a-really-tiny-ci-library/

于 2010-12-02T03:25:00.873 回答
0

查看这个自定义 CodeIgniter 模板库。我已经在几个项目中使用过它,而且很容易使用。我知道这篇文章迟到了,但值得一试。

于 2009-07-30T07:41:54.907 回答
0

在 CodeIgniter 中集成 Smarty?这是微风!CodeIgniter中的模板系统非常基础。

在 CI 3 中对 Smarty 3 执行以下步骤:

下载 CodeIgniter 3

下载 Smarty 3 并将其内容放在“application/third_party/smarty”文件夹中

在 'application/libraries' 中创建 'Custom_smarty.php' 文件并添加以下代码:

<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

require_once(APPPATH.'third_party/smarty/Smarty.class.php');

class Custom_smarty extends Smarty {

  function __construct()
  {
    parent::__construct();
    $this->setTemplateDir(APPPATH.'views/templates/');   
    $this->setCompileDir(APPPATH.'views/templates_c/');
  }
}
?>

在“application/views”文件夹中创建“templates”和“templates_c”文件夹

在“application/views/templates”文件夹中创建简单的“test.tpl”文件

在 'application/config' 文件夹中打开 'autoload.php' 并添加:

$autoload['libraries'] = array('custom_smarty');

在控制器内部:$this->custom_smarty->display('test.tpl');

如果您在 localhost 上工作,请设置权限:sudo chmod -R 777 templates_c. 否则,如果您发现错误无法写入文件,请联系您的托管服务。首先确保 templates_c 文件夹存在。

否则,您可以使用另一个模板引擎,例如 Twig。

于 2015-05-15T15:45:43.307 回答