博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeIngiter 2.2.x 与 Smarty3 整合的方案 解决CI的不足
阅读量:7172 次
发布时间:2019-06-29

本文共 2879 字,大约阅读时间需要 9 分钟。

目前CI框架已经推出了2.0的版本了。一直想尝试一下用于我的小说网站的核心。
在国内的网站搜索了一下,基本没有这方面的资料。只要找找E文的网站,功夫不负苦心人,还是被我找到了。经过测试可以正常使用,在一个叫Cool PHP tool的网站。作者提供配置方案和已经配置好的文件,但是西林按他写的步骤总是出错,后来仔细看了一下文件后来发现,那个朋友在打包文件的时候把目录弄 错了。
下面我就给大家详细说明一下配置步骤。
第一步:安装CodeIngiter。 这个不需要详细说,下载地址为:
第二步:下载最新版本的 Smarty库,下载地址:
第三步:下载配置文件包,里面已经写好了Smarty的配置方案,你可以根据自己的需要按里面的代码重新配置。下载地址: (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 (!('BASEPATH')) ('No direct script access allowed');
 
/**
 * Smarty Class
 *
 * @package    CodeIgniter
 * @subpackage  Libraries
 * @category  Smarty
 * @author    Kepler Gelotte
 * @link    
 */
 
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 ( ( $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 = (), $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'] = ('smarty');
复制代码

最后呢,你就可以试试看SMARTY库时候正常工作了。在前面的那个压缩包内已经存放有原作者的测试文件。测试路径为:
http://your-site/index.php/example
正确的效果页如下截图:
更新说明:大家在配置好Smarty环境后经常会报下面这个错误!
出现这个错误的时候大家不要急,直接打开libs/sysplugins/smarty_internal_data.php文件,然后查找$_variable这个变量的名称。出错的地方多半是写成了$$_variable了。删除前面多的$符号即可!

转载于:https://www.cnblogs.com/dashafa/p/4005976.html

你可能感兴趣的文章
20155319 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
查看>>
从第一行代码开始开发区块链(一)
查看>>
Struts2整合Hibernate3实现用户登录功能
查看>>
10.21html 标签
查看>>
silverlight 乐动魔方 实战十 .
查看>>
简单的算术题。
查看>>
黎活明8天快速掌握android视频教程--18_在SQLite中使用事务
查看>>
jdbc
查看>>
心理学效应:阿基米德与酝酿效应
查看>>
Linux之/etc/inittab文件
查看>>
Angular JS 作用域和数据绑定
查看>>
jquery学习记录四(操作DOM元素)
查看>>
js实现图片下载
查看>>
apktool.bat
查看>>
[转] CMake
查看>>
HDU 2159 FATE
查看>>
Cview的派生类
查看>>
Android activity的生命周期
查看>>
HTML5+Css3-webkit-filter
查看>>
css border-bottom(指定下边线的样式、宽度及颜色)
查看>>