CodeIngiter 2.2.x 与 Smarty3 整合的方案 解决CI的不足

目前CI框架已经推出了2.0的版本了。一直想尝试一下用于我的小说网站的核心。

在国内的网站搜索了一下,基本没有这方面的资料。只要找找E文的网站,功夫不负苦心人,还是被我找到了。经过测试可以正常使用,在一个叫Cool PHP

tool的网站。作者提供配置方案和已经配置好的文件,但是西林按他写的步骤总是出错,后来仔细看了一下文件后来发现,那个朋友在打包文件的时候把目录弄
错了。

下面我就给大家详细说明一下配置步骤。

第一步:安装CodeIngiter。 这个不需要详细说,下载地址为:http://codeigniter.com/downloads/

第二步:下载最新版本的 Smarty库,下载地址:http://www.smarty.net/download

第三步:下载配置文件包,里面已经写好了Smarty的配置方案,你可以根据自己的需要按里面的代码重新配置。下载地址:

codeigniter-smarty-3.zip

(12.46 KB, 下载次数: 591)

第四步:在system目录下创建一个libs目录,然后在libs下创建一个smarty目录。结构如下:

【此步骤经过测试直接放在项目目录里面的也是可以的 比如:application/libraries/smarty里面然后第五步骤写一个类库,然后自动加载这个文件】

system/libs/smarty

然后在将smarty的类库文件放入到上面的smarty目录下。

第五步:将codeigniter-smarty-3.zip包里的文件直接拷贝到根目录下的对应文件夹中。然后创建Smarty 的类库文件Smarty.php。代码如下:

PHP复制代码

<?php  if (!defined(‘BASEPATH‘)) exit(‘No direct script access allowed‘);
 
/**
 * Smarty Class
 *
 * @package    CodeIgniter
 * @subpackage  Libraries
 * @category  Smarty
 * @author    Kepler Gelotte
 * @link    http://www.coolphptools.com/codeigniter-smarty
 */
 
require_once( BASEPATH.‘libs/smarty/libs/Smarty.class.php‘ );
 
class CI_Smarty extends Smarty {
 
    function CI_Smarty(){
        parent::Smarty();
 
        $this->compile_dir = APPPATH . "views/templates_c";
        $this->template_dir = APPPATH . "views/templates";
        $this->assign( ‘APPPATH‘, APPPATH );
        $this->assign( ‘BASEPATH‘, BASEPATH );
 
        log_message(‘debug‘, "Smarty Class Initialized");
    }
 
    function __construct(){
        parent::__construct();
 
        $this->compile_dir = APPPATH . "views/templates_c";
        $this->template_dir = APPPATH . "views/templates";
        $this->assign( ‘APPPATH‘, APPPATH );
        $this->assign( ‘BASEPATH‘, BASEPATH );
 
        // Assign CodeIgniter object by reference to CI
        if ( method_exists( $this, ‘assignByRef‘) ){
            $ci =& get_instance();
            $this->assignByRef("ci", $ci);
        }
        log_message(‘debug‘, "Smarty Class Initialized");
    }
 
  /**
   *  Parse a template using the Smarty engine
   * This is a convenience method that combines assign() and
   * display() into one step.
   *
   * Values to assign are passed in an associative array of
   * name => value pairs.
   * If the output is to be returned as a string to the caller
   * instead of being output, pass true as the third parameter.
   *
   * @access  public
   * @param  string
   * @param  array
   * @param  bool
   * @return  string
   */
 
  function view($template, $data = array(), $return = FALSE){
    foreach ($data as $key => $val){
      $this->assign($key, $val);
    }
 
    if ($return == FALSE){
      $CI =& get_instance();
      $CI->output->final_output = $this->fetch($template);
      return;
    }else{
      return $this->fetch($template);
    }
  }
}
 
// END Smarty Class

复制代码

然后再将文件保存到下面的目录下:

application/libraries/Smarty.php

原文中放置的目录是 /system/application/libraries/Smarty.php 但是我这边就报错。

第六步:为让CI每次自动载入Smarty库。打开/system/application/config/autoload.php文件,在$autoload[‘libraries‘]中添加smarty的库名如下:

PHP复制代码

$autoload[‘libraries‘] = array(‘smarty‘);

复制代码

最后呢,你就可以试试看SMARTY库时候正常工作了。在前面的那个压缩包内已经存放有原作者的测试文件。测试路径为:

http://your-site/index.php/example

正确的效果页如下截图:

更新说明:大家在配置好Smarty环境后经常会报下面这个错误!

出现这个错误的时候大家不要急,直接打开libs/sysplugins/smarty_internal_data.php文件,然后查找$_variable这个变量的名称。出错的地方多半是写成了$$_variable了。删除前面多的$符号即可!

时间: 2024-08-09 10:43:54

CodeIngiter 2.2.x 与 Smarty3 整合的方案 解决CI的不足的相关文章

ssm 整合(方案二 maven)

通过maven来整合ssm方便很多,至少不用去找jar包 具体架构如下: 1.配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache

struts2与JasperReport整合应用中解决PDF中文不显示问题(让我烦恼了半天)

今天在struts2中以pdf导出JasperReport报表时,遇到了一个很奇怪的问题:在action中获取一些值并且将其放到map中,但是通过$F{name}取值时,有些值能显示,而有些值不能显示,有些值只能显示部分.刚开始还以为是action存放到map中的key和jsper中取到的是不一致的,检查了半天发现并没有问题.这个问题然我郁闷了半天,始终没找到问题所在,由于不知道问题出在哪了,在百度上搜索了半天也没找到解决的办法,无意间看到了一片文章解决了我的问题,下面整理了一下此问题的解决方案

codeigniter整合smarty

CI3.0.2已经发布,但是模板类还是不怎么好用,而且不能编译.Smarty目前最新版为3.1.27,Smarty功能强大,用习惯了Smarty标签,一般难以放弃,而且,是可以编译文件执行,速度快,我们可以把它们整合使用,弥补CI的模板功能的不足.我们整合的都是目前的最新版,CI版本3.0.3及 Smarty版本3.1.27.下面描述整合过程. 1.下载smarty-3.1.272 .解压smarty-3.1.27到CI项目中的application\libraries下面,其他的文件删除. 3

spring 整合 struts2

整合之前要搞清楚struts2是什么; struts2:表现层框架  增删改查  作用域  页面跳转   异常处理  ajax 上传下载  excel   调用service spring :IOC/DI:bean容器   aop 整合点: 1.struts2的所有对象 交由spring来管理  意味着struts.xml内对象生成方式要发生改变 2.初始化容器的时机  服务器启动时完成 spring已有方案解决 整合步骤: 1.建web 工程 copy jar包   2.copy     st

Spring整合ORM技术 -- 集成Hibernate

1.Spring整合ORM方案的好处: 方便基础设施的搭建.不同的ORM技术都有一套自己的方案以初始化框架.搭建基础设施等.在搭建基础设施中,数据源是不可或缺的资源,不同的ORM框架的实现方式各不相同.Spring针对不同的ORM框架,采用相同的方式配置数据源,并为不同的ORM框架提供相同的FactoryBean,用以初始化ORM框架的基础设施,可以把它们当成普通Bean对待. 异常封装.Spring能够转化各种ORM框架抛出的异常,将ORM框架专有的或检查型异常转换为SpringDAO异常体系

redis mybatis spring整合

最近想在框架里面加入redis,替换原因呢其实也没有,就是单纯的想替换掉 ---维基百科:redis介绍 一般开发中用户状态使用session或者cookie,两种方式各种利弊. Session:在InProc模式下容易丢失,并且引起并发问题.如果使用SQLServer或者SQLServer模式又消耗了性能 Cookie则容易将一些用户信息暴露,加解密同样也消耗了性能. Redis采用这样的方案解决了几个问题, 1.Redis存取速度快. 2.用户数据不容易丢失. 3.用户多的情况下容易支持集群

CI框架整合UEditor编辑器上传功能

最近项目中要使用到富文本编辑器,选用了功能强大的UEditor,接下来就来讲讲UEditor编辑器的上传功能整合. 本文UEditor版本:ueditor1_4_3_utf8_php版本 第一步:部署编辑器 HTML代码: 1 <textarea id="editor" class="editor" type="text/plain" style="width:100%;height:500px;"></te

使用Spring+MySql实现读写分离(二)spring整合多数据库

紧接着上一章,因为现在做的项目还是以spring为主要的容器管理框架,所以写以下spring如何整合多个数据源. 1. 背景 我们一般应用对数据库而言都是"读多写少",也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案, 其中一个是主库,负责写入数据,我们称之为:写库: 其它都是从库,负责读取数据,我们称之为:读库: 那么,对我们的要求是: 1. 读库和写库的数据一致: 2. 写数据必须写到写库: 3. 读数据必须到读库: 2. 方案 解决读写分离的方案有两种:应

SpringBoot2 整合Kafka组件,应用案例和流程详解

本文源码:GitHub·点这里 || GitEE·点这里 一.搭建Kafka环境 1.下载解压 -- 下载 wget http://mirror.bit.edu.cn/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz -- 解压 tar -zxvf kafka_2.11-2.2.0.tgz -- 重命名 mv kafka_2.11-2.2.0 kafka2.11 2.启动Kafka服务 kafka依赖ZooKeeper服务,需要本地安装并启动ZooKeeper. 参