参考链接:thinkphp的twig模板实现
使用composer安裝好Thinkphp 3.2.3
composer create-project topthink/thinkphp your-project-name
安裝完畢之後,在執行Twig的安裝命令
composer require twig/twig:~1.0
在Think\Library\Think\Template\Driver下建立一個Twig.class.php文件
<?php
namespace Think\Template\Driver;
/**
* Twig模板引擎驱动
*/
class Twig { /**
* 渲染模板输出
* @access public
* @param string $templateFile 模板文件名
* @param array $parameters 模板变量
* @return void
*/
public function fetch($templateFile, $parameters) {
//THEME_PATH 是Thinkphp中的模板目录
//CACHE_PATH 是Thinkphp中的缓存目录,无需修改
$loader = new \Twig_Loader_Filesystem(array(THEME_PATH));
$twig = new \Twig_Environment($loader, array(
'cache' => CACHE_PATH
));
$templateFile = substr($templateFile,strlen(THEME_PATH));
//一行code的输出
//echo $twig->render($templateFile,$parameters);
//两行code的输出
$template = $twig->loadTemplate($templateFile);
echo $template->render($parameters);
}
}
配置./Application/Common\Conf\config.php
<?php
return array(
//'配置项'=>'配置值'
'TMPL_ENGINE_TYPE'=>'Twig',
'TMPL_L_DELIM' => '{{',// 模板引擎普通标签开始标记
'TMPL_R_DELIM' => '}}',// 模板引擎普通标签结束标记
);
使用案例
在index.php中添加一句
require './vendor/autoload.php';
就变成类似
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +---------------------------------------------------------------------- // 应用入口文件 // 检测PHP环境
if (version_compare(PHP_VERSION, '5.3.0', '<')) {
die('require PHP > 5.3.0 !');
} // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
define('APP_DEBUG', true); // 定义应用目录
define('APP_PATH', './Application/');
//引入composer
require './vendor/autoload.php';
// 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php'; // 亲^_^ 后面不需要任何代码了 就是如此简单
./Application/Home/Controller/IndexController.class.php
<?php
namespace Home\Controller; use Think\Controller; class IndexController extends Controller
{
public function index()
{
$this->assign("foo",200);
$this->display("index");
}
}
./Application/Home/View/Index/index.html
<!Doctype html>
<html>
<head>
<meta charset='utf-8'>
</head>
<body>
{{ foo }}
</body>
</html>
TODO:
- 可以通过Twig显示Form
- Twig的cache的及时更新html的修改,目前需要手动删除缓存文件之后,才会显示修改之后的Html内容