我正在尝试将Smarty添加到Codeigniter,这是我做的步骤:
1)下载CI
2)下载Smarty并将其内容放入&application; / third_party / smarty'夹
3)创建' smarty.php'在' application / libraries'
中输入文件4)创建模板' &安培; ' templates_c'文件夹内的'应用程序/视图'夹
5)创建简单的test.tpl'在' application / views / templates'中输入文件夹
6)打开' autoload.php'在' application / config'文件夹并添加:
$autoload['libraries'] = array('smarty');
7)在控制器内写了$this->smarty->display('test.tpl';
我收到此错误 - Message: Unable to load template file 'test.tpl'
经过一些调试后,我注意到我的Smarty模板目录设置为默认值,而不是桥接类中指定的那个(' application / libraries / smarty.php')
以下是桥接类内容:
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(APPPATH.'third_party/smarty/Smarty.class.php');
class CI_Smarty extends Smarty {
function __construct()
{
parent::__construct();
// NOT Changig this for some reason
$this->setTemplateDir(APPPATH.'views/templates/');
$this->setCompileDir(APPPATH.'views/templates_c/');
}
}
我认为CI_Smarty类由于某种原因没有被执行,这就是为什么我的模板目录被设置为默认值
还要注意,如果我直接进入Smarty.class.php并手动更改模板目录 - 一切都会正常工作
找出问题 - 桥接课应该在系统/图书馆&#39;而不是在应用程序/库中#39;文件夹中。
答案 0 :(得分:1)
问题是您需要加载ci_smarty
扩展smarty
而不是smarty
的库。
$autoload['libraries'] = array('ci_smarty');
在你的控制器中,
$this->ci_smarty->display('test.tpl');
重要强>
请注意,所有本机CodeIgniter库都以。为前缀 CI_所以不要将它用作你的前缀。
尝试将库名更改为custom_smarty
。
最后但并非最不重要
不要因任何原因触摸系统目录,永远不要。这不是最好的做法。您可以轻松地在application/libraries
目录中创建新库或扩展现有库。
希望它对你有用。
答案 1 :(得分:0)
此外,如果您喜欢或需要使用
$这 - &GT; smarty-&GT;显示器(&#39; test.tpl&#39);
首先,请点击&#39; ci_smarty&#39;反对&#39; smarty&#39;在Controller __Consructor()函数上 $ this-&gt; smarty = clone $ this-&gt; ci_smarty;