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模板库。我已经在多个项目中使用过它,并且易于使用。我知道这篇文章已经很晚了,但是值得一试。


推荐阅读

    linux系统中管道命令?

    linux系统中管道命令?,标准,系统,工作,命令,信息,通讯,管道,流向,连续,工具,L

    linux系统命令记不住?

    linux系统命令记不住?,系统,工作,基础,地址,网络,服务,命令,第一,名称,目录,

    linux命令安装新系统?

    linux命令安装新系统?,系统,软件,工作,管理,在线,电脑,信息,基础,发行,数据,L

    linux系统用户组命令?

    linux系统用户组命令?,系统,管理,密码,代码,用户组,用户,命令,邮箱,电脑,名

    linux小红帽系统命令?

    linux小红帽系统命令?,系统,密码,环境,分析,电脑,命令,用户,大灰狼,大调,终

    linux系统命令le?

    linux系统命令le?,系统,地址,工作,基础,命令,网络,报告,信息,管理,软件,Linux

    linux系统死机命令?

    linux系统死机命令?,系统,工作,标准,设备,命令,时间,级别,方式,用户,电源,重

    linux系统命令rz?

    linux系统命令rz?,系统,数据,命令,文件,工具,平台,基础,情况,管理,服务,Linux

    linux重启系统命令是?

    linux重启系统命令是?,系统,服务,网络,工作,设备,标准,命令,信息,名称,网络

    linux虚拟机系统命令?

    linux虚拟机系统命令?,系统,环境,密码,电脑,软件,工具,信息,位置,设备,虚拟

    linux系统下关机命令?

    linux系统下关机命令?,系统,工作,命令,标准,设备,用户,方式,目的,方法,终端,l

    linux系统中注销命令?

    linux系统中注销命令?,系统,地址,工作,密码,管理,命令,信息,目录,文件,控制

    linux系统工作命令?

    linux系统工作命令?,系统,工作,地址,设备,信息,标准,命令,单位,发行,数据,Lin

    linux常见系统命令?

    linux常见系统命令?,系统,工作,信息,管理,地址,命令,数据,标准,网络,工具,lin

    linux系统命令升级?

    linux系统命令升级?,系统,单位,工具,适当,名字,电脑,数据,信息,命令,音乐,mv

    linux系统传递命令?

    linux系统传递命令?,系统,工作,地址,信息,命令,发行,基础,目录,功能,操作,lin

    linux系统看主机命令?

    linux系统看主机命令?,信息,系统,中科,电脑,第一,软件,实时,工具,设备,数据,l

    linux系统依赖命令?

    linux系统依赖命令?,系统,工作,地址,信息,管理,命令,软件,分析,基础,目录,lin

    命令行查看linux系统?

    命令行查看linux系统?,系统,信息,状态,百分比,分析,实时,第一,数据,命令,文

    命令行安装linux系统?

    命令行安装linux系统?,系统,单位,网络,信息,密码,电脑,一致,位置,环境,地方,