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 作用域解析运算符(::)
Jul 27 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
Dec 24 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PDO::beginTransaction讲解
Jan 27 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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
BBS(php &amp; mysql)完整版(二)
2006/10/09 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
PHP使用静态方法的几个注意事项
2014/09/16 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
php跨域调用json的例子
2013/11/13 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
vue 设置proxyTable参数进行代理跨域
2018/04/09 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
Python最长公共子串算法实例
2015/03/07 Python
利用Python实现图书超期提醒
2016/08/02 Python
python使用fork实现守护进程的方法
2017/11/16 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
2020/04/22 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
亿企通软件测试面试题
2012/04/10 面试题
高校毕业生自我鉴定
2013/10/27 职场文书
司机岗位职责范本
2015/04/10 职场文书
标准发言稿结尾
2019/07/18 职场文书
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS