Smarty集成到CodeIgniter框架中

时间:2008-09-03 01:18:45

标签: codeigniter zend-framework smarty

一点背景资料
我最近一直在寻找一些PHP框架,它归结为两个。 Zend Framework或CodeIgniter。

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

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

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

6 个答案:

答案 0 :(得分:3)

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

有一个名为“模板”的库,可以很好地使用你想要的任何模板解析器:

Template CI Library - V1.4.1

语法很容易集成到CI应用程序和智能集成点上。

答案 1 :(得分:2)

稍微加油,希望你不介意......

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

随着最近ZF版本中添加的布局内容,它的模板确实很难出错......而且它完全可插拔,正如Favio所提到的那样。我使用ZF越多,我就越喜欢它;他们按照我的方式做事!

答案 2 :(得分: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 Framework挂钩。它比CodeIgniter更复杂,但是已经有一篇关于如何在ZF文档中做到这一点的入门知识。 http://framework.zend.com/manual/en/zend.view.scripts.html网上还有很多教程。

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

答案 3 :(得分:0)

查看此custom CodeIgniter templating library。我已经在几个项目中使用它,它很容易使用。我知道这篇文章很晚,但值得一试。

答案 4 :(得分: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/

答案 5 :(得分:0)

将Smarty集成到CodeIgniter中?这是一件轻而易举的事! template system in CodeIgniter非常基本。

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

下载CodeIgniter 3

下载Smarty 3并将其内容放入' application / third_party / smarty'夹

创建' 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/');
  }
}
?>

制作&#39;模板&#39; &安培; &#39; templates_c&#39;文件夹内的&#39;应用程序/视图&#39;夹

创建简单的&#39; test.tpl&#39;在&#39; application / views / templates&#39;中输入文件夹

打开&#39; autoload.php&#39;在&#39; application / config&#39;文件夹并添加:

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

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

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

否则您可以使用其他模板引擎,如Twig。