CodeIgniter集成smarty的方法详解


Posted in PHP onMay 26, 2016

本文实例讲述了CodeIgniter集成smarty的方法。分享给大家供大家参考,具体步骤如下:

1.下载smarty

解压到ci的libraries目录 如:

ci/application/libraries/Smarty-2.6.20

2.编写Mysmarty.php 自己的类库文件

代码如下:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
require "Smarty-2.6.20/libs/Smarty.class.php";
/**
* @file system/application/libraries/Mysmarty.php
*/
class Mysmarty extends Smarty
{
  function Mysmarty()
  {
    $this->Smarty();
    $config =& get_config();
    // absolute path prevents "template not found" errors
    $this->template_dir = (!empty($config['smarty_template_dir']) ? $config['smarty_template_dir'] : BASEPATH . 'application/views/');
    $this->compile_dir = (!empty($config['smarty_compile_dir']) ? $config['smarty_compile_dir'] : BASEPATH . 'cache/'); 
    //use CI's cache folder
    if (function_exists('site_url')) {
      // URL helper required
      $this->assign("site_url", site_url()); // so we can get the full path to CI easily
    }
  }
  /**
  * @param $resource_name string
  * @param $params array holds params that will be passed to the template
  * @desc loads the template
  */
  function view($resource_name, $params = array())  {
    if (strpos($resource_name, '.') === false) {
      $resource_name .= '.html';
    }
    if (is_array($params) && count($params)) {
      foreach ($params as $key => $value) {
        $this->assign($key, $value);
      }
    }
    // check if the template file exists.
    if (!is_file($this->template_dir . $resource_name)) {
      show_error("template: [$resource_name] cannot be found.");
    }
    return parent::display($resource_name);
  }
} // END class smarty_library
?>

3.在autoload.php让ci自动加载smarty

$autoload['libraries'] = array('database', 'mysmarty');

或者 使用模板时再自己加载smarty

$this->load->library("mysmarty");

4.smarty变量赋值 display模板

$this->mysmarty->assign('test', 'Hello World.');
$this->mysmarty->view('smarty');

注:images css 等外部资源文件 放在ci系统文件夹外 网站根目录下

最好用:

$this->load->helper('url');

base_url()来访问:

base_url()."images/xxx.jpg"

不要放到system里

PHP 相关文章推荐
smarty实例教程
Nov 19 PHP
destoon整合UCenter图文教程
Jun 21 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
php实现的任意进制互转类分享
Jul 07 PHP
关于PHP开发的9条建议
Jul 27 PHP
培养自己的php编码规范
Sep 28 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
深入解析PHP中SESSION反序列化机制
Mar 01 PHP
PHP implode()函数用法讲解
Mar 08 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
Dec 10 PHP
PHPExcel简单读取excel文件示例
May 26 #PHP
php快速排序原理与实现方法分析
May 26 #PHP
深入理解PHP中的empty和isset函数
May 26 #PHP
CodeIgniter常用知识点小结
May 26 #PHP
php数组函数array_walk用法示例
May 26 #PHP
PHP发送AT指令实例代码
May 26 #PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
May 26 #PHP
You might like
模拟flock实现文件锁定
2007/02/14 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
javascript实现密码强度显示
2015/03/18 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
node中使用es5/6以及支持性与性能对比
2017/08/11 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python按钮的响应事件详解
2019/03/04 Python
django 2.2和mysql使用的常见问题
2019/07/18 Python
简单了解python协程的相关知识
2019/08/31 Python
pandas的相关系数与协方差实例
2019/12/27 Python
3种python调用其他脚本的方法
2020/01/06 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
Python调用C/C++的方法解析
2020/08/05 Python
详解python算法常用技巧与内置库
2020/10/17 Python
HTTP状态码详解
2021/03/18 杂记
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
瑞典度假品牌:OAS
2019/05/28 全球购物
2014年小学班主任工作总结
2014/11/08 职场文书
公司优秀员工推荐信
2015/03/24 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
利用Python多线程实现图片下载器
2022/03/25 Python