如何将Smarty模板引擎添加到CodeIgniters 3框架?

时间:2018-11-03 20:15:48

标签: php codeigniter smarty

如何在CodeIgniters 3中添加和使用Smarty模板引擎?

请注意,CodeIgniters 3没有模板引擎,您应该将HTML代码与PHP代码和标签混合使用。更不用说-您无法扩展其他视图(例如在Laravel或Smarty中所做的那样)。

毕竟这是框架,而不是额外的麻烦。

1 个答案:

答案 0 :(得分:1)

安装和配置

  1. 启动并运行您的CodeIgniter文件夹,以便您的欢迎页面正常运行。

  2. 转到Smarty download page并下载最新的“ 源代码” (zip)”。

  3. 提取该Smarty ZIP文件夹并将其重命名为 smarty

  4. smarty 文件夹从#3步骤移至您的CodeIgniters application / third_party 文件夹。像这样-your_project/application/third_party/smarty

  5. 在项目的 application / libraries / 文件夹中创建新的PHP文件 SmartyLibrary.php 。像这样-your_project/application/libraries/SmartyLibrary.php

  6. 在您创建的 SmartyLibrary.php 文件中,放入以下内容,直接进入步骤#7

    <?php defined('BASEPATH') OR exit('No direct script access allowed');
    
    require_once(APPPATH . 'third_party/smarty/libs/Smarty.class.php');
    
    class SmartyLibrary extends Smarty {
    
    
    function __construct() {
        parent::__construct();
    
        // Define directories, used by Smarty:
        $this->setTemplateDir(APPPATH . 'views');
        $this->setCompileDir(APPPATH . 'cache/smarty_templates_cache');
        $this->setCacheDir(APPPATH . 'cache/smarty_cache');
    }
    
    }
  7. 分析__construct()函数,尤其是这一部分:

    application/config/autoload.php

这3行对于Smarty本身是必需的(它是Smarty basic installation的一部分)。确保这些定义的目录存在于您的项目中(创建它们),并确保它们具有正确的权限(聪明地需要创建缓存文件)。

  1. 转到项目的welcome.tpl并进行如下编辑:

    // Define directories, used by Smarty:
    $this->setTemplateDir(APPPATH . 'views');
    $this->setCompileDir(APPPATH . 'cache/smarty_templates_cache');
    $this->setCacheDir(APPPATH . 'cache/smarty_cache');

    或者如果您不想自动加载Smarty,请在您的控制器中使用它:

    $autoload['libraries'] = array('SmartyLibrary' => 'smarty');
  2. 就是这样!像其他任何CodeIgniter库一样使用smarty对象。像这样:

    $this->load->library('SmartyLibrary', 'smarty');

测试

  1. 请考虑使用与上述相同的Smarty目录(文件 SmartyLibrary.php )-在项目的application/views/中创建新文件application/views/welcome.tpl(例如:{ {1}}),其中包含以下内容:

    $this->smarty->xxxxxxxxx('xxxxxxxxx', xxxxxxxx);
  2. 像这样编辑默认的Welcome.php控制器(假设您自动加载smarty库):

    <html>
    <header><title>This is title</title></header>
    <body>
    {$message}
    </body>
    </html>
    }
  3. 尝试加载项目的基本URL。您应该看到“这是Smarty测试!”屏幕上显示消息!。

最终想法

  • 在Smarty视图中定义CSS或JS文件的位置时-使用类似 public function index(){ // Assign session data to Smarty: $this->smarty->assign('message', "This is Smarty test!"); // Compile smarty template and load it to user: $this->smarty->display('welcome.tpl'); } 的方法。
  • 现在可以在Smarty模板中将CodeIgniter视图{base_url()}css/bootstrap.min.css中的类似内容替换为<?php echo form_open('books/input'); ?>