Smarty集成到CodeIgniter框架中

问题描述 投票:19回答:6

一点背景资料: 我最近一直在寻找一些PHP框架,它归结为两个。 Zend Framework或CodeIgniter。

我更喜欢CodeIgniter,因为它设计简单。这是非常裸露的骨头,它只是保持简单。我不喜欢的是弱模板系统。模板系统对我很重要,因为我将与另一位设计师合作。能够给他一个好的模板系统是一个很大的优点。

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

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

codeigniter zend-framework smarty
6个回答
3
投票

很抱歉重新提出一个旧问题 - 但是没有一个答案被标记为“已接受”。

有一个名为“模板”的库,可以很好地使用你想要的任何模板解析器:

Template CI Library - V1.4.1

这种语法非常容易集成到CI应用程序和智能集成点上。


2
投票

稍微加油,希望你不要介意......

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

随着最近ZF版本中添加的布局内容,其模板真的很容易出错......而且它完全可插拔,正如Favio所提到的那样。我使用ZF越多,我就越喜欢它;他们按照我的方式做事!


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 Framework挂钩。它比CodeIgniter更复杂,但是已经有一篇关于如何在ZF文档中做到这一点的入门知识。 http://framework.zend.com/manual/en/zend.view.scripts.html网上有很多教程。

在我看来它几乎是一样的,你可以使用纯PHP或Smarty作为你的模板“引擎”,所以它取决于项目。此外,比较具有丰富经验且已拥有视图助手库的开发人员,因此她使用纯PHP,而不是对PHP知之甚少,但对Smarty有丰富经验的设计师。有时决策必须基于谁将做什么。


0
投票

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


0
投票

似乎没有选择此问题的答案,也没有最新的解决方案与最新版本的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/


0
投票

将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。

© www.soinside.com 2019 - 2024. All rights reserved.