如何在CodeIgniters 3中添加和使用Smarty模板引擎?
请注意,CodeIgniters 3没有模板引擎,您应该将HTML代码与PHP代码和标签混合使用。更不用说-您无法扩展其他视图(例如在Laravel或Smarty中所做的那样)。
毕竟这是框架,而不是额外的麻烦。
答案 0 :(得分:1)
启动并运行您的CodeIgniter文件夹,以便您的欢迎页面正常运行。
转到Smarty download page并下载最新的“ 源代码” (zip)”。
提取该Smarty ZIP文件夹并将其重命名为 smarty 。
将 smarty 文件夹从#3步骤移至您的CodeIgniters application / third_party 文件夹。像这样-your_project/application/third_party/smarty
。
在项目的 application / libraries / 文件夹中创建新的PHP文件 SmartyLibrary.php 。像这样-your_project/application/libraries/SmartyLibrary.php
。
在您创建的 SmartyLibrary.php 文件中,放入以下内容,直接进入步骤#7 。
<?php defined('BASEPATH') OR exit('No direct script access allowed'); require_once(APPPATH . 'third_party/smarty/libs/Smarty.class.php'); class SmartyLibrary extends 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()
函数,尤其是这一部分:
application/config/autoload.php
这3行对于Smarty本身是必需的(它是Smarty basic installation的一部分)。确保这些定义的目录存在于您的项目中(创建它们),并确保它们具有正确的权限(聪明地需要创建缓存文件)。
转到项目的welcome.tpl
并进行如下编辑:
// Define directories, used by Smarty: $this->setTemplateDir(APPPATH . 'views'); $this->setCompileDir(APPPATH . 'cache/smarty_templates_cache'); $this->setCacheDir(APPPATH . 'cache/smarty_cache');
或者如果您不想自动加载Smarty,请在您的控制器中使用它:
$autoload['libraries'] = array('SmartyLibrary' => 'smarty');
就是这样!像其他任何CodeIgniter库一样使用smarty对象。像这样:
$this->load->library('SmartyLibrary', 'smarty');
请考虑使用与上述相同的Smarty目录(文件 SmartyLibrary.php )-在项目的application/views/
中创建新文件application/views/welcome.tpl
(例如:{ {1}}),其中包含以下内容:
$this->smarty->xxxxxxxxx('xxxxxxxxx', xxxxxxxx);
像这样编辑默认的Welcome.php
控制器(假设您自动加载smarty库):
<html> <header><title>This is title</title></header> <body> {$message} </body> </html>}
尝试加载项目的基本URL。您应该看到“这是Smarty测试!”屏幕上显示消息!。
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');
}
的方法。{base_url()}css/bootstrap.min.css
中的类似内容替换为<?php echo form_open('books/input'); ?>
。