给新伙伴的忠告:不要去想着有多复杂,看一遍绝对就会弄了!

这样集成的目的是什么?

因为我使用过CI和smarty,所以我就按自己的理解讲一下:CI框架在控制器、models方面做的很好,但在多变的视图方面我感觉没有专门处理视图的smarty模板做的好,因此就想到了将这两者合并,各取其长。

1、下载CI框架、smarty模板,这个就不需要我多说了。

2、将smarty的libs文件夹copy到CI的third_party文件夹下(其实copy到哪个文件夹下是无所谓的,只要加载到它就行了),并更名为smarty;

3、在CI的根目录下创建一下文件夹:

还有,在CI的helpers文件夹下创建smartyPLU文件夹

4、在CI的配置文件夹config下创建smarty.php配置文件,并拷入以下代码:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

//指定相关的文件夹
$config['template_dir'] = APPPATH . 'views';
$config['compile_dir'] = FCPATH . 'templates_c';
$config['config_dir'] = FCPATH . 'configs';
$config['cache_dir'] = FCPATH . 'cache';
$config['plugins_dir'] = APPPATH . 'helpers/smartyPLU'; //$config['template_ext'] = ; //设置缓存,默认为false
$config['caching'] = false;
$config['cache_lifetime'] = 60; $config['auto_literal'] = false; $config['left_delimiter'] = '<{';
$config['right_delimiter'] = '}>';

5、在CI的libraries文件夹中创建CSmarty.php文件,并拷入以下代码:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

require_once(APPPATH.'third_party/smarty/Smarty.class.php');     //这里指定Smarty.class.php的存放位置

class CSmarty extends Smarty
{ protected $CI; public function __construct(){ $this->CI = & get_instance();
$this->CI->load->config('smarty'); //这里加载smarty的配置信息的文件 //相关配置项
$this->template_dir = $this->CI->config->item('template_dir');
$this->compile_dir = $this->CI->config->item('compile_dir');
$this->config_dir = $this->CI->config->item('config_dir');
$this->cache_dir = $this->CI->config->item('cache_dir');
$this->plugins_dir = $this->CI->config->item('plugins_dir');
//$this->template_ext = $this->CI->config->item('template_ext'); $this->caching = $this->CI->config->item('caching');
$this->cache_lifetime = $this->CI->config->item('cache_lifetime'); $this->auto_literal = $this->CI->config->item('auto_literal'); $this->left_delimiter = $this->CI->config->item('left_delimiter');
$this->right_delimiter = $this->CI->config->item('right_delimiter'); //设置编码格式和时区
header("Content-type:text/html;charset=utf-8");
date_default_timezone_set('UTC');
}
}

6、将smarty的启动加到CI的自启动文件autoload.php文件中:

$autoload['libraries'] = array('CSmarty');

7、接下来就是在CI中使用了,将CI中的通过$this->load->view("index",$data)方式加载视图改为smarty方式:

$this->csmarty->assign('data', $data);
$this->csmarty->display('index.html');

PS:使用了smarty的方式时,会出现一些路径上的问题。

CI集成Smarty的实现方式的更多相关文章

  1. **【ci框架】PHP的CI框架集成Smarty的最佳方式

    因为CI自带的模板功能不是很方便,所以大家普遍采用集成Smarty的方式来弥补CI这方面的不足. 本人在网上看了不少CI集成Smarty的教程,包括咱们CI论坛里面的一个精华帖子 http://cod ...

  2. Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目

    在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...

  3. 星云测试插装编译流程与CI集成

    星云测试Horn插装采用脚本配置方式自动对语法进行扫描和插装,在整个插装过程中需要用到星云提供的插件工具.通过与CI集成,在CI编译前通过jenkins调用星云插装插件模块进行必要的数据填充,生成对应 ...

  4. Atitit.你这些项目不都是模板吗?不是原创  集成和整合的方式大总结

    Atitit.你这些项目不都是模板吗?不是原创  集成和整合的方式大总结 1.1. 乔布斯的名言:创新即整合(Creativity is just connecting things).1 1.2. ...

  5. Yii集成smarty说明

    1.       [在protected目录下建立文件夹vendor/smarty,把smarty的类包放入其中] 2.       [在extensions目录下边建立文件CSmarty.php] ...

  6. CI集成phpunit Error: No code coverage driver is available 的解决

    CI集成phpunit时,运行报No code coverage driver is available的错误,如下图: yanglingdeMacBook-Pro:tests yangling$ p ...

  7. CI集成 mesos 资源分配的思考, 待续

    读了mesos的论文(https://people.eecs.berkeley.edu/~alig/papers/mesos.pdf ),感觉应用在 CI 上的资源管理很赞,能够解决 jenkins在 ...

  8. Jenkins+Git+Fastlane+Fir CI集成

    上一篇有讲关于fastlane自动化部署,本篇将会着重讲关于fastlane的实际应用. 目标: 利用自动化jenkins打包工具,自动拉取git仓库代码 不需要通过手动检查修改xcode中项目配置修 ...

  9. 解析SparkStreaming和Kafka集成的两种方式

    spark streaming是基于微批处理的流式计算引擎,通常是利用spark core或者spark core与spark sql一起来处理数据.在企业实时处理架构中,通常将spark strea ...

随机推荐

  1. Scrapy 爬取某网站图片

    1. 创建一个 Scrapy 项目,在命令行或者 Pycharm 的 Terminal 中输入: scrapy startproject imagepix 自动生成了下列文件: 2. 在 imagep ...

  2. vim之快捷键

    Vim 编辑器是一个基于命令行的工具,是传奇编辑器 vi 的增强版.尽管图形界面的富文本编辑有很多,但是熟悉 Vim 对于每一位 Linux 的使用者都能有所帮助——无论你是经验丰富的系统管理员,还是 ...

  3. ubuntu下安装vue/cli提示No command 'vue' found

    通过官方指令 npm install -g @vue/cli 安装vue脚手架提示: No command 'vue' found, did you mean: Command 'vpe' from ...

  4. C# 斐波那契数列 第n项数字/前n项的和

    static void Main(string[] args) { int a = Convert.ToInt32(Console.ReadLine()); //求第n位数字是多少 Console.W ...

  5. 查看磁盘空间,Android各目录讲解

    dfFilesystem Size Used Free Blksize/dev 2.0G 116.0K 2.0G 4096----------包含了所有Linux系统中使用的外部设备/sys/fs/c ...

  6. dedecms 上传目录路径

    DedeCms已经升级到5.7版本了..可惜附件的目录还是不统一,比如我们从后台把附件目录调整为Ym(默认为Ymd)然而我们的附件路径依然是不一样的比如:Ymd代表年月日从文章里上传路径为:/Ym/1 ...

  7. IPC之msg.c源码解读

    // SPDX-License-Identifier: GPL-2.0 /* * linux/ipc/msg.c * Copyright (C) 1992 Krishna Balasubramania ...

  8. Percona MongoDB 4 搭建副本集

    什么是副本集: 是一组维护相同数据集的mongod进程 提供冗余,自动故障转移和高可用性 提供读取可伸缩性 内部概念或多或少与MySQL的概念相似 PRIMARY概念与MySQL复制中的MASTER大 ...

  9. CSS相对定位与绝对定位详解

    相对定位和绝对定位,不改变元素的大小形状,只改变元素的位置. 相对定位和绝对定位是通过position属性来控制的,position属性的值为下面几种: 值 描述 absolute 使元素绝对定位,相 ...

  10. Liunx命令问题

    第一个问题是:快速杀死服务 第一步:查看进程号pid        ps -u my_account -o pid,rss,command | grep redis 第二步:杀死进程        k ...