vaphp整合smart模板有关问题
程序员文章站
2022-06-06 22:08:56
...
vaphp整合smart模板问题
第3步要在core文件夹下建MY_Controller,但是vsphp创建的CI框架里面没有这个文件夹,我自己建了个core文件夹在里面创建了MY_Controller。运行的时候报错找不到MY_Controller类。然后我在用到这个类的地方引用这个文件就好了。但是这样太麻烦了每个文件都要引用。有没有别的处理方法。
------解决方案--------------------
查找包含 __autoload 或 spl_autoload_register 字样的文件
修改相关代码
------解决方案--------------------
没定义一个类 你让他继承这个MY_Controller类就可以了啊
------解决方案--------------------
在index文件中 默认就加载这个文件
目前正在做一个小项目,选择Ci框架也是第一次使用,发现CI没有内置的模版引擎,传统的php、html混写有点不习惯咯被惯坏了,决定将smarty模版引擎整合到CI框架中。
步骤如下:
下载:ci,smarty
配署ci 在这里就不多说了……
1. 将下载好的smarty包的lib文件上传到ci中的libraries 文件中,将取名称修改为smarty,在libraries文件新建cismarty.php文件,内容如下:
if (!defined('BASEPATH')) exit("no direct script access allowd");
//以下是加载smarty的类文件
require_once(APPPATH.'libraries/smarty/Smarty.class.php');
//定义cismarty类,继承smarty类
class cismarty extends Smarty{
//定义一个受保护的变量,
protected $ci;
function __construct(){
parent::__construct();
//引用实例化CI,这里主要是将smarty的配置文件写到ci中,以方便程序管理
$this->ci = & get_instance();
//加载ci的新建的smarty配置文件
$this->ci->load->config('smarty');
$this->cache_lifetime = $this->ci->config->item('cache_lifetime');
$this->caching = $this->ci->config->item('caching');
$this->template_dir = $this->ci->config->item('template_dir');
$this->compile_dir = $this->ci->config->item('compile_dir');
$this->cache_dir = $this->ci->config->item('cache_dir');
$this->use_sub_dirs = $this->ci->config->item('use_sub_dirs');
$this->left_delimiter = $this->ci->config->item('left_delimiter');
$this->right_delimiter = $this->ci->config->item('right_delimiter');
2. 在config下新建smarty.php配置文件
$config['cache_lifetime'] = 30*24*3600; //更新周期
$config['caching'] = false;//是否使用缓存,项目在调试期间,不建议启用缓存
$config['template_dir'] = APPPATH.'views'; //设置模板目录
$config['compile_dir'] = APPPATH.'views/template_c'; //设置编译目录
$config['cache_dir'] = APPPATH.'views/cache';//缓存文件夹
$config['use_sub_dirs'] = true; //子目录变量(是否在缓存文件夹中生成子目录)
$config['left_delimiter'] = '$config['right_delimiter'] = '}>';
3. 在CI里重载smarty的 assign 和 display方法
在框架根目录下core/目录下新建控制器继承CI基类,MY_Controller
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function assign($key,$val) {
$this->cismarty->assign($key,$val);
}
public function display($html) {
$this->cismarty->display($html);
}
}
4. 修改Config文件下的autoload.php 自动加载类文件
$autoload['libraries'] = array('cismarty');
到此配置已完成.
第3步要在core文件夹下建MY_Controller,但是vsphp创建的CI框架里面没有这个文件夹,我自己建了个core文件夹在里面创建了MY_Controller。运行的时候报错找不到MY_Controller类。然后我在用到这个类的地方引用这个文件就好了。但是这样太麻烦了每个文件都要引用。有没有别的处理方法。
------解决方案--------------------
查找包含 __autoload 或 spl_autoload_register 字样的文件
修改相关代码
------解决方案--------------------
没定义一个类 你让他继承这个MY_Controller类就可以了啊
------解决方案--------------------
在index文件中 默认就加载这个文件
相关文章
相关视频