Smarty 集成到 CodeIgniter 框架中

Posted

技术标签:

【中文标题】Smarty 集成到 CodeIgniter 框架中【英文标题】:Smarty integration into the CodeIgniter framework 【发布时间】:2010-09-07 15:32:39 【问题描述】:

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

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

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

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

【问题讨论】:

正如其他人所说,例如Zend_View 组件本身非常强大且可扩展[带有助手等]。您不需要 Smarty。此外,Smarty 是非常繁重的 PHP4 代码,通常您希望避免使用它。除此之外,使用您更熟悉的任何框架。 查看类似主题的[我的答案][1]! [1]:***.com/a/10297502/934599 @直到我知道 smarty3 兼容 php5,也许 php4 还不够。对不起,我没看到这是一个老话题:( 【参考方案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 有丰富经验的设计师。有时必须根据谁将要做什么来做出决定。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

很抱歉重新提出一个老问题 - 但尚未将任何答案标记为“已接受”。

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

Template CI Library - V1.4.1

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

【讨论】:

【参考方案4】:

看看这个custom CodeIgniter templating library。我已经在几个项目中使用过它,而且很容易使用。我知道这篇文章迟到了,但值得一试。

【讨论】:

【参考方案5】:

似乎没有为这个问题选择答案,也没有提供最新的解决方案来使用最新版本的 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/

【讨论】:

【参考方案6】:

在 CodeIgniter 中集成 Smarty?这是微风! 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/');
  

?>

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

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

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

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

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

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

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

【讨论】:

以上是关于Smarty 集成到 CodeIgniter 框架中的主要内容,如果未能解决你的问题,请参考以下文章

在codeigniter中,大家使用smarty吗?

CI框架集成Smarty

CodeIgniter + Smarty - 是不是相关?

codeigniter整合smarty

***CodeIgniter框架集成支付宝即时到账支付SDK

退出 Smarty 手动完成