CodeIgniter框架实现的整合Smarty引擎DEMO示例


Posted in PHP onMarch 28, 2019

本文实例讲述了CodeIgniter框架实现的整合Smarty引擎。分享给大家供大家参考,具体如下:

Smarty的模板机制很强大,一般情况下CI框架无需整合其他模板标签,因为PHP本身就是一种标签,简单易用。Codeigniter整合Smarty教程(我用的都是最新版本)如下:

第一步:下载Codeigniter最新版本:CodeIgniter框架源码
第二步:下载Smarty最新版本:Smarty引擎源码
第三步:具体配置

我已将本人整合好的代码上传,有兴趣的可以下载阅读。Codeigniter框架整合Smarty引擎DEMO 。

1、准备

将smarty拷贝到application/libraries下,然后再根目录下下新建templates,templates_c,config,cache目录,结构如下:

CodeIgniter框架实现的整合Smarty引擎DEMO示例

2、修改入口文件

在入口文件index.php中新增:

define('ROOT', dirname(__FILE__));

3、新建CI_Smarty.php

在libraries文件下新建CI_Smarty.php,写如下代码:

<?php
/**
* =======================================
* Created by PK Technology.
* Author: ZhiHua_W
* Date: 2016/10/31 0031
* Time: 上午 9:16
* Project: CI整合
* Power: CI框架整合smarty
* =======================================
*/
defined('BASEPATH') OR exit('No direct script access allowed');
require(APPPATH . 'libraries/smarty/Smarty.class.php');
class CI_Smarty extends Smarty
{
    public function __construct($template_dir = '', $compile_dir = '', $config_dir = '', $cache_dir = '')
    {
      parent::__construct();
      if (is_array($template_dir)) {
        foreach ($template_dir as $key => $value) {
          $this->$key = $value;
        }
      } else {
        //ROOT是Codeigniter在入口文件index.php定义的本web应用的根目录
        $this->template_dir = $template_dir ? $template_dir : ROOT . '/templates';
        $this->compile_dir = $compile_dir ? $compile_dir : ROOT . '/templates_c';
        $this->config_dir = $config_dir ? $config_dir : ROOT . '/config';
        $this->cache_dir = $cache_dir ? $cache_dir : ROOT . '/cache';
      }
    }
}

4、在controller中使用

在控制器Welcome.php中写入使用方法,代码如下:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Welcome extends CI_Controller
{
    /**
     * Welcome constructor.
     * 写入构造函数,引入CI_Smarty类文件
     */
    public function __construct()
    {
      parent::__construct();
      $this->load->library('CI_Smarty');
    }
    /**
     * smarty测试函数
     */
    public function test()
    {
      $this->ci_smarty->assign('test', 'smarty');
      $this->ci_smarty->display('test.tpl');
    }
}

5、创建模版试图

在templates文件夹下创建test.tpl文件,写入如下代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Codeigniter整合Smarty测试</title>
</head>
<body>
这是 {$test} 测试
</body>
</html>

6、访问

至此,我们整合完毕,访问:http://localhost/Codeigniter_Smarty/index.php/Welcome/test即可看到测试结果。

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP序列号生成函数和字符串替换函数代码
Jun 07 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
PHP进程同步代码实例
Feb 12 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
详解PHP5.6.30与Apache2.4.x配置
Jun 02 PHP
PDO::prepare讲解
Jan 29 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
PHP微商城开源代码实例
Mar 27 #PHP
PHP简单验证码功能机制实例详解
Mar 27 #PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
Mar 27 #PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 #PHP
PHP判断是否微信访问的方法示例
Mar 27 #PHP
PHP中localeconv()函数的用法
Mar 26 #PHP
PHP实现的支付宝支付功能示例
Mar 26 #PHP
You might like
实现树状结构的两种方法
2006/10/09 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
PHP中strtotime函数使用方法详解
2011/11/27 PHP
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
微信支付的开发流程详解
2016/09/13 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
vue.js 打包时出现空白页和路径错误问题及解决方法
2019/06/26 Javascript
使用vue-router切换页面时实现设置过渡动画
2019/10/31 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Python中的装饰器用法详解
2015/01/14 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
会计顶岗实习心得
2014/01/25 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
初三语文教学计划
2015/01/22 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
企业战略合作意向书
2015/05/08 职场文书