如何添加&在CodeIgniters 3中使用Smarty模板引擎?
请注意,CodeIgniters3没有模板引擎,您应该将HTML代码与PHP代码混合使用&标签。更不用说,你不能扩展其他观点(就像你在Laravel或Smarty中所做的那样(。
毕竟,这是一个框架,而不是额外的麻烦。
安装&配置
-
打开CodeIgniter文件夹&正在运行,所以您的欢迎页面正在运行。
-
转到Smarty下载页面并下载最新的">源代码(zip(".
-
提取Smarty ZIP文件夹并将其重命名为Smarty。
-
将smarty文件夹从#3步骤移动到CodeIgniters应用程序/第三方文件夹。像这样-
your_project/application/third_party/smarty
。 -
在项目的application/librarys/文件夹中创建新的PHP文件SmartyLibrary.PHP。像这样-
your_project/application/libraries/SmartyLibrary.php
。 -
在您创建的SmartyLibrary.php文件中,放入以下内容,然后直接进入步骤#7。
<?php定义("BASEPATH"(或退出("不允许直接脚本访问"(;require_one(APPPATH'第三方/smarty/libs/smarty.class.php'(;类SmartyLibrary扩展Smarty{
}function __construct() { parent::__construct(); // Define directories, used by Smarty: $this->setTemplateDir(APPPATH . 'views'); $this->setCompileDir(APPPATH . 'cache/smarty_templates_cache'); $this->setCacheDir(APPPATH . 'cache/smarty_cache'); }
-
分析
__construct()
的功能,特别是这部分://定义Smarty使用的目录:$this->setTemplateDir(APPPATH.'views'(;$this->setCompileDir(APPPATH'cache/smarty_templates_cache'(;$this->setCacheDir(APPPATH.'cache/smarty_cache'(;
Smarty本身需要这3条线路(这是Smarty基本安装的一部分(。确保这些定义的目录存在于您的项目中(创建它们(,并确保它们具有正确的权限(smarty需要创建缓存文件(。
-
转到您的项目的
application/config/autoload.php
并像这样编辑:$autoload['libraries']=数组('MartyLibrary'=>'smarty'(
或者如果你不想自动加载Smarty-在你的控制器中使用这个:
$this->load->library('SmartyLibrary','smarty'(
-
就是这样!像使用任何其他CodeIgniter库一样使用smarty对象。像这样:
$this->smarty->xxxxxxxxx('xxxxxxxxx',xxxxxxxx(
测试
-
考虑使用与上面给出的相同的Smarty目录(文件SmartyLibrary.php(-在项目的
application/views/
中创建新文件welcome.tpl
(像这样:application/views/welcome.tpl
(,其中包含以下内容:<html><页眉>lt;标题>这是标题<标题>lt/页眉><身体>{$message}<身体><html>
-
像这样编辑您的默认
Welcome.php
控制器(假设您自动加载智能库(:<?php已定义("BASEPATH"(或退出("不允许直接脚本访问"(;class欢迎扩展CI_Controller{
}public function index(){ // Assign session data to Smarty: $this->smarty->assign('message', "This is Smarty test!"); // Compile smarty template and load it to user: $this->smarty->display('welcome.tpl'); }
-
尝试加载项目的基本URL。您应该在屏幕上看到"这是Smarty测试!"消息!。
最后的想法
- 在Smarty视图中定义CSS或JS文件的位置时,请使用类似的
{base_url()}css/bootstrap.min.css
- CodeIgniter视图
<?php echo form_open('books/input'); ?>
中的类似内容现在可以在Smarty模板中替换为{form_open('books/input')}