Smarty集成到CodeIgniter框架中

Smarty集成到CodeIgniter框架中

Smarty integration into the CodeIgniter framework

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

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

Zend是第二选择,因为它内置了更好的模板系统。尽管与CodeIgniter相比,Zend是另一种野兽。它强调"模块之间的松耦合",但它是一个更大的框架。我不想感到有很多事情在我从未使用过的引擎盖下运行。我认为这是不必要的开销,因此我考虑将模板系统放入CodeIgniter:Smarty。

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


很抱歉要复活一个旧问题-但尚未将所有答案标记为"已接受"。

有一个名为"模板"的库,它可以使您几乎使用所需的任何模板解析器,都做得很好:

模板CI库-V1.4.1

该语法很容易集成到您的CI应用程序以及本地化的smart集成中。


稍微加班,希望您不要介意...

我是Zend Framework的用户,我认为值得一提的是,松散耦合意味着您不需要包括任何未在使用中的文件。希望这可以消除您对不必要的开销的担心。

ZF的最新发行版中增加了布局元素,其模板确实很难过错……而且正如Favio所提到的,它是完全可插入的。我使用ZF的次数越多,我越喜欢它。他们以我会做的方式做事!


我做了一个快速的谷歌搜索,发现以下内容:
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丰富经验的设计人员进行比较。有时,决策必须基于谁去做。


将Smarty集成到CodeIgniter中?轻而易举!
CodeIgniter中的模板系统非常基础。

对CI 3中的Smarty 3遵循以下步骤:

下载CodeIgniter 3

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

在"应用程序/库"中创建" Custom_smarty.php"文件并添加以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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/');
  }
}
?>

在"应用程序/视图"文件夹中创建"模板"和" templates_c"文件夹

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

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

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

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

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

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


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

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

Using Smarty 3 in Codeigniter 2 (a really tiny CI library)


查看此自定义CodeIgniter模板库。我已经在多个项目中使用过它,并且易于使用。我知道这篇文章已经很晚了,但是值得一试。


推荐阅读