Smarty集成到CodeIgniter框架中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Smarty集成到CodeIgniter框架中相关的知识,希望对你有一定的参考价值。
一点背景资料: 我最近一直在寻找一些php框架,它归结为两个。 Zend Framework或CodeIgniter。
我更喜欢CodeIgniter,因为它设计简单。这是非常裸露的骨头,它只是保持简单。我不喜欢的是弱模板系统。模板系统对我很重要,因为我将与另一位设计师合作。能够给他一个好的模板系统是一个很大的优点。
Zend是第二选择,因为内置了更好的模板系统。与CodeIgniter相比,Zend是一种不同的野兽。它强调“模块之间的松散耦合”,但它是一个更大的框架。我不喜欢觉得我有很多东西在我从不使用的引擎盖下运行。在我看来,这是不必要的开销,所以我考虑将模板系统放入CodeIgniter:Smarty。
问题:将Smarty集成到CodeIgniter的过程有多容易/困难?从我最初的CodeIgniter文档扫描中,我可以看到框架的布局很容易理解,我预计没有问题。我想知道是否有人以前曾经使用过它,因此我知道你所经历的任何“陷阱”会使这更难以实现或不可能实现。我也想知道这是否是一件好事。 CodeIgniter中的模板系统是否足以正常使用?除了Smarty之外,还有其他适用于CodeIgniter的模板模块吗?我最好使用Zend Framework吗?这个轮子是在这里发明的吗?
很抱歉重新提出一个旧问题 - 但是没有一个答案被标记为“已接受”。
有一个名为“模板”的库,可以很好地使用你想要的任何模板解析器:
这种语法非常容易集成到CI应用程序和智能集成点上。
稍微加油,希望你不要介意......
我是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有丰富经验的设计师。有时决策必须基于谁将做什么。
看看这个custom CodeIgniter templating library。我已经在几个项目中使用它,它很容易使用。我知道这篇文章很晚,但值得一试。
似乎没有选择此问题的答案,也没有最新的解决方案与最新版本的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/
将Smarty集成到CodeIgniter中?这是一件轻而易举的事! template system in 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。
以上是关于Smarty集成到CodeIgniter框架中的主要内容,如果未能解决你的问题,请参考以下文章