如何使用Codeigniter访问第三方文件夹中的智能库?

时间:2013-10-02 01:42:36

标签: php codeigniter smarty

我只需要一些关于在Codeigniter中安装Smarty的帮助。

我做的是:

  1. 提取smarty,重命名为smarty并放入第三方文件夹
  2. 在autoload.php中启用smarty
  3. 在视图中创建模板文件夹(templates,templates_c)
  4. 运行示例页面(在我的情况下,我运行欢迎消息的默认索引)
  5. 结果是: 无法加载请求的类:smarty

    在我的autoload.php中,我添加了smarty:

    $autoload['packages'] = array(APPPATH.'third_party','smarty');
    
    
    /*
    | -------------------------------------------------------------------
    |  Auto-load Libraries
    | -------------------------------------------------------------------
    | These are the classes located in the system/libraries folder
    | or in your application/libraries folder.
    |
    | Prototype:
    |
    |   $autoload['libraries'] = array('database', 'session', 'xmlrpc');
    */
    
    $autoload['libraries'] = array('smarty');
    

    我只是不知道我的错误在哪里。我希望你能帮助我。我是聪明的初学者。

2 个答案:

答案 0 :(得分:4)

您需要创建一个库类来扩展smarty并自动加载。在/application/library/文件夹中,创建一个名为smartylib.php

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

// path to SMARTY library
include APPPATH.'thirdparty/Smarty/libs/Smarty.class.php';

class Smartylib extends Smarty {

    function __construct() {
        parent::__construct();
    }
}

然后在autoload.php中自动加载

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

您可能需要在构造中为Smarty做一些配置。请查看extending smarty

上的Smarty文档

然后您就可以在控制器中使用它了:

$this->smartylib->assign('name','Ned');
$this->smartylib->display('index.tpl');

答案 1 :(得分:0)

此外,如果您喜欢或需要使用

$this->smarty->assign('name', 'Ned');

请在Controller __Consructor()函数中将'smartylib'对象克隆为'smarty'

$this->smarty = clone $this->smartylib;