Thinkphp twig

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

 1 <?php
 2 namespace Think\Template\Driver;
 3 /**
 4 * Twig模板引擎驱动
 5 */
 6 class Twig {
 7
 8     /**
 9     * 渲染模板输出
10     * @access public
11     * @param string $templateFile 模板文件名
12     * @param array $parameters 模板变量
13     * @return void
14     */
15     public function fetch($templateFile, $parameters) {
16         //THEME_PATH 是Thinkphp中的模板目录
17         //CACHE_PATH 是Thinkphp中的缓存目录,无需修改
18         $loader = new \Twig_Loader_Filesystem(array(THEME_PATH));
19         $twig = new \Twig_Environment($loader, array(
20             ‘cache‘ => CACHE_PATH
21         ));
22         $templateFile = substr($templateFile,strlen(THEME_PATH));
23         //一行code的输出
24         //echo $twig->render($templateFile,$parameters);
25         //两行code的输出
26         $template = $twig->loadTemplate($templateFile);
27         echo $template->render($parameters);
28     }
29 }

配置./Application/Common\Conf\config.php

1 <?php
2 return array(
3     //‘配置项‘=>‘配置值‘
4     ‘TMPL_ENGINE_TYPE‘=>‘Twig‘,
5     ‘TMPL_L_DELIM‘ => ‘{{‘,// 模板引擎普通标签开始标记
6     ‘TMPL_R_DELIM‘ => ‘}}‘,// 模板引擎普通标签结束标记
7 );

使用案例

在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 <[email protected]>
// +----------------------------------------------------------------------

// 应用入口文件

// 检测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

 1 <?php
 2 namespace Home\Controller;
 3
 4 use Think\Controller;
 5
 6 class IndexController extends Controller
 7 {
 8     public function index()
 9     {
10         $this->assign("foo",200);
11         $this->display("index");
12     }
13 }

./Application/Home/View/Index/index.html

1 <!Doctype html>
2 <html>
3 <head>
4     <meta charset=‘utf-8‘>
5 </head>
6 <body>
7     {{ foo }}
8 </body>
9 </html>

TODO:

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

Thinkphp twig的相关文章

thinkphp U方法生成链接没有host

今天将自己代码传到线上服务器,页面上用到很多thinkphp U() 方法生成的链接.本地测试没啥问题,到线上发现链接生成的不对,每个都没有了host 每个链接多个index,然后查看tp的U方法: $url    =   __APP__.'/'.($module?$module.MODULE_PATHINFO_DEPR:'').implode($depr,array_reverse($var)); 是因为__APP__这里的原因,然后找到__APP__赋值的地方: define('__APP_

ThinkPHP 3.2 性能优化,实现高性能API开发

需求分析 目前的业务全站使用ThinkPHP 3.2.3,前台.后台.Cli.Api等.目前的业务API访问量数千万,后端7台PHP 5.6,平均CPU使用率20%. 测试数据 真实业务 php5.6:500 QPS php7.0:850 QPS 真实业务中减少一次Mysql查询业务或者减少一次Redis读写 php5.6:800 QPS php7.0:1250 QPS 目前优化的结果: ThinkPHP可以完整的跑在缓存中: 在不需要mysql查询时,不建立mysql连接: 不读写redis时

Thinkphp模板中函数的使用

1.在模板中使用php函数 在thinkphp的html中,我们经常会遇到一些变量难以直接从php控制端直接处理,这些变量只有在模板中循环输出的时候处理比较合适,这个时候,我们就要在模板中使用函数 1.1对输出模板使用php函数 {$data.name|md5} //把模板中的name变量进行md5加密 把这句话翻译成php语言: <?php echo (md5($data['name'])); ?>   1.2函数中多个参数需要调用 1.2.1将前面输出的变量当后面函数的第二个参数使用 {$

用thinkphp将网络上的图片下载到本地服务器

我用的thinkphp版本是3.2.3,这个版本的跟更早些版本的调用方法不太一样,正确的调用方法是: Demo3Controller.class <?php namespace Home\Controller; use Think\Controller; class Demo3Controller extends Controller { public function download(){ $url = "http://n.sinaimg.cn/sports/20161023/MrD2

ThinkPHP讲解(一)框架基础

ThinkPHP框架知识点过于杂乱,接下来将以问题的形势讲解tp(ThinkPHP的简写) 1.tp框架是什么,为什么使用是它? 一堆代码的集合,里边有变量.函数.类.常量,里边也有许多设计模式MVC.AR数据库.单例等等.框架可以节省我们50-60%的工作量,我们全部精力都集中在业务层次. 为什么使用框架 框架可以帮组我们快速.稳定.高效搭建程序系统 该系统由于框架的使用使得本身的维护性.灵活性.适应客户需求方面得到最大化的增强. 使用框架的过程中可以使得我们的注意力全部集中业务层面,而无需关

ThinkPHP 3.2.3 加减乘法验证码类

ThinkPHP 3.2.3 自带的验证码类位于 /ThinkPHP/Library/Think/Verify.class.php,字体文件位于 /ThinkPHP/Library/Think/Verify/ 可以在 Verify.class.php 文件内进行修改,也可以单独写一个类继承自带的验证码类.如果单独写一个继承的类,可以重用父类的属性和方法,但是要注意的是父类中有一些属性和方法是私有(private)的,可以修改这些私有的属性和方法为保护(protected)的,如果不希望修改框架自

Nginx下配置ThinkPHP的URL Rewrite模式和pathinfo模式支持

前面有关于lnmp环境的搭建,在此就不在赘述.下面就简述thinkPHP如何在nginx下开启url_rewrite和pathinfo模式支持 主要有两个步骤: 一.更改php.ini将;cgi.fix_pathinfo=0  改为cgi.fix_pathinfo=1 二.更改nginx配置文件中php的location设置pathinfo模式: location ~ \.php { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index in

ThinkPHP中的视图

ThinkPHP中的视图View 1.什么是视图View 所谓的视图就是用户可视化操作界面. 2.视图View组成 view类(模板引擎类似Smarty) 模板文件(html模板) 3.视图的定义 默认视图的定义规则: ./项目目录/Home或Admin模块下的View文件夹/Public控制器名称/login操作方法.html ① 在控制器中定义相关操作方法,如下图所示: ② 在./Application/Admin/View/Public文件夹下创建login.html模板文件 ③ 显示效果

thinkphp笔记

thinkphp 笔记TP框架:1.模板引擎2.MVC设计模式3.常用操作类 模板引擎和框架区别:1.模板引擎只是框架中用来做php和html分离的 MVC设计模式:M 数据模型V 视图C 控制器 V(HTML模板) --smarty()--> C(PHP逻辑控制) ->M(Model类表操作) localhost/test/index.php/模块/操作localhost/test/index.php/Index/add 目录结构ThinkPHP.php 框架入口文件Common 框架公共文