参考链接: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:

  1. 可以通过Twig显示Form
  2. Twig的cache的及时更新html的修改,目前需要手动删除缓存文件之后,才会显示修改之后的Html内容

Thinkphp twig的更多相关文章

  1. thinkphp 集成 twig模版引擎

    下载地址:https://github.com/fucongcong/ThinkPHPLevel/archive/master.zip 控制器格式为: <?php namespace Home\ ...

  2. thinkphp 设计思想

    thinkphp 运行机制: thinkphp首先设置一些常量.然后运行Think对象(系统环境),装载think的运行环境,包括:自动加载.异常处理.功能核心等.环境准备好后,运行App对象(应用程 ...

  3. thinkphp5.1 - twig模板-全局变量

    thinkphp5.1 - twig模板-全局变量我们在定义 ccs 之类的静态文件的时候,经常会使用<link rel="stylesheet" href="__ ...

  4. 制作类似ThinkPHP框架中的PATHINFO模式功能

    一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

  5. 在 SAE 上部署 ThinkPHP 5.0 RC4

    缘起 SAE 和其他的平台有些不同,不能在服务器上运行 Composer 来安装各种包,必须把源码都提交上去.一般的做法,可能是直接把源码的所有文件复制到目录中,添加到版本库.不过,这样就失去了与上游 ...

  6. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

  7. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  8. thinkphp数据的查询和截取

    public function NewsList(){ $this->assign('title','news'); $p = I('page',1); $listRows = 6; $News ...

  9. [转]thinkphp 模板显示display和assign的用法

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

随机推荐

  1. leetcode@ [72/115] Edit Distance & Distinct Subsequences (Dynamic Programming)

    https://leetcode.com/problems/edit-distance/ Given two words word1 and word2, find the minimum numbe ...

  2. leetcode@ [208] Implement Trie (Prefix Tree)

    Trie 树模板 https://leetcode.com/problems/implement-trie-prefix-tree/ class TrieNode { public: char var ...

  3. Android实例-解决虚拟键盘遮挡问题(XE8+小米2)

    结果: 1.可以自动向上移动,来防遮挡,但同时发现个问题,如果是按硬件返回没有问题,要是点输入法(QQ.百度输入法)上的隐藏就不行了. 2.点击Edit2后出现输入法,点输入法上的隐藏后, 再点Edi ...

  4. jquery-ui 之Sortable详解

    <div class="aaa"> <ul id="sortable"> <li id="test">I ...

  5. cocos2d-x 3.0 开发(一) Hello_New_World

    1.Previous On 2dx     2dx 的3.0版本是个与以往不同的版本.变化比2dx从1.x 到2.x的变化还要大不少.具体的新功能可以参见:CocoaChina大会见闻——cocos2 ...

  6. 在C#中实现软件自动升级

    在C#中实现软件自动升级 winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一台地升级,本文结合实际情况,通过软件实现自动升级,弥补了这一缺陷,有较好的 ...

  7. [原创]Android秒杀倒计时自定义TextView

    自定义TextView控件TimeTextView代码: import android.content.Context; import android.content.res.TypedArray; ...

  8. Why Does Everyone Else Appear to Be Succeeding?

    Why Does Everyone Else Appear to Be Succeeding?  —Steven G. Krantz When you are a student, it will a ...

  9. Android最新锁屏病毒分析及解锁

    一.情况简介   从去年开始PC端的敲诈者类病毒在不断的爆发,今年年初的时候手机上也开始出现了敲诈者之类的病毒,对这类病毒很无语也是趋势,因为很多时候病毒的产生是和金钱利益相关的.前天去吾爱破解论坛病 ...

  10. linux 常用命令 -- 系统管理工具包: 监视邮件的使用情况

    清单 5. 获得磁盘使用情况统计信息 $ du -sk * 20 admin 1020 appleby 45828 applicants 13264 buy 11704 dev 11200 finan ...