CI集成Smarty的实现方式
给新伙伴的忠告:不要去想着有多复杂,看一遍绝对就会弄了!
这样集成的目的是什么?
因为我使用过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的实现方式的更多相关文章
- **【ci框架】PHP的CI框架集成Smarty的最佳方式
因为CI自带的模板功能不是很方便,所以大家普遍采用集成Smarty的方式来弥补CI这方面的不足. 本人在网上看了不少CI集成Smarty的教程,包括咱们CI论坛里面的一个精华帖子 http://cod ...
- Gitlab CI 集成 Kubernetes 集群部署 Spring Boot 项目
在上一篇博客中,我们成功将 Gitlab CI 部署到了 Docker 中去,成功创建了 Gitlab CI Pipline 来执行 CI/CD 任务.那么这篇文章我们更进一步,将它集成到 K8s 集 ...
- 星云测试插装编译流程与CI集成
星云测试Horn插装采用脚本配置方式自动对语法进行扫描和插装,在整个插装过程中需要用到星云提供的插件工具.通过与CI集成,在CI编译前通过jenkins调用星云插装插件模块进行必要的数据填充,生成对应 ...
- Atitit.你这些项目不都是模板吗?不是原创 集成和整合的方式大总结
Atitit.你这些项目不都是模板吗?不是原创 集成和整合的方式大总结 1.1. 乔布斯的名言:创新即整合(Creativity is just connecting things).1 1.2. ...
- Yii集成smarty说明
1. [在protected目录下建立文件夹vendor/smarty,把smarty的类包放入其中] 2. [在extensions目录下边建立文件CSmarty.php] ...
- CI集成phpunit Error: No code coverage driver is available 的解决
CI集成phpunit时,运行报No code coverage driver is available的错误,如下图: yanglingdeMacBook-Pro:tests yangling$ p ...
- CI集成 mesos 资源分配的思考, 待续
读了mesos的论文(https://people.eecs.berkeley.edu/~alig/papers/mesos.pdf ),感觉应用在 CI 上的资源管理很赞,能够解决 jenkins在 ...
- Jenkins+Git+Fastlane+Fir CI集成
上一篇有讲关于fastlane自动化部署,本篇将会着重讲关于fastlane的实际应用. 目标: 利用自动化jenkins打包工具,自动拉取git仓库代码 不需要通过手动检查修改xcode中项目配置修 ...
- 解析SparkStreaming和Kafka集成的两种方式
spark streaming是基于微批处理的流式计算引擎,通常是利用spark core或者spark core与spark sql一起来处理数据.在企业实时处理架构中,通常将spark strea ...
随机推荐
- 409 Conflict - PUT https://registry.npm.taobao.org/-/user/org.couchdb.user:zphtown - [conflict] User xxx already exists
解决方法cmd执行 npm config set registry https://registry.npmjs.org/ 为什么,参考此文档:https://blog.csdn.net/adc_go ...
- 使用flex布局解决百分比高度元素垂直居中
方法一: align-self(解决父元素下面单个子元素布局方式) 父级加上 div{display:flex} 子元素 span { flex-grow: 1; align-self: center ...
- 阿里巴巴开源框架java诊断工具--Arthas
下载:arthas wget https://alibaba.github.io/arthas/arthas-boot.jar java -jar arthas-boot.jar --target-i ...
- vue项目 时间戳转 格式
项目用了 element UI的日期插件,修改时 时间回显不了,打印出来是换行了,因此要转换 changeTime(value){ let date = new Date(value); let y ...
- Linux服务器性能检查教程
一.uptime命令 这个命令可以快速查看机器的负载情况.在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量.这些数据可以让我们对系统资源使用有一个宏观 ...
- 盗取连接你wifi的人的qq
#本文内容仅供个人娱乐学习 思路: 使用wireshark监听笔记本的wifi热点,拦截捕获连接你的wifi热点的人的手机qq网络数据包,从网络数据包中分析取出两个qq空间的两个coookie值,使用 ...
- scroll js 原生
1.当前位置滚动: document.documentElement.scrollTop 当前位置: 有可能是0 window.scrollTo(,document.documentElement.s ...
- android如何自动切换后台app
在做 android 前端性能自动化测试时,你是否经历过这样的场景:依次启动 A.B.C 三个 app,其中 C 是被测 app, 当当前屏幕切换到 B 进行相关操作后,如何通过封装方法实现自动切换会 ...
- Elasticsearch中Mapping
映射(Mapping) 概念:创建索引时,可以预先定义字段的类型以及相关属性.从而使得索引建立得更加细致和完善.如果不预先设置映射,会自动识别输入的字段类型. 官方文档(字段数据类型):https:/ ...
- Autoprefixer:一个以最好的方式处理浏览器前缀的后处理程序
Autoprefixer解析CSS文件并且添加浏览器前缀到CSS规则里,使用Can I Use的数据来决定哪些前缀是需要的. 所有你需要做的就是把它添加到你的资源构建工具(例如 Grunt)并且可 ...