【问题标题】:Smarty integration into the CodeIgniter frameworkSmarty 集成到 CodeIgniter 框架中
【发布时间】: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]:stackoverflow.com/a/10297502/934599
  • @直到我知道 smarty3 兼容 php5,也许 php4 还不够。对不起,我没看到这是一个老话题:(

标签: codeigniter zend-framework smarty


【解决方案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。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-02-14
              • 1970-01-01
              • 2020-02-06
              • 2022-01-16
              • 1970-01-01
              相关资源
              最近更新 更多