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->custom_smarty->display('test.tpl');
如果您在本地主机上工作,请设置权限:sudo chmod -R 777 templates_c
。否则,如果您发现错误无法写入文件,请联系您的托管服务。首先确保 templates_c 文件夹存在。
否则,您可以使用其他模板引擎,例如 Twig。
【讨论】:
以上是关于Smarty 集成到 CodeIgniter 框架中的主要内容,如果未能解决你的问题,请参考以下文章