看到一篇整理挺好的一片twig的文章,特转载过来,以备后用。转载自:http://www.ruchee.com/code/programming_languages/twig_base.html
安装配置
- 新建一个目录
libs
- 在该目录下新建文件
composer.json
,往该文件写入以下内容:{ "require": { "twig/twig": "1.*" } }
- 在
libs
目录上执行composer install
安装Twig
(前提是已安装Composer
包管理器) - 在
libs
上级目录新建三个文件夹:templates
、templates_c
、web
,其中templates
用来存放模板文件,templates_c
用来存放编译缓存文件,web
用来存放PHP
源文件 - 在
libs
上级目录新建文件MyTwig.php
公共文件,内容如下:// 引用 Composer 自动加载文件 require_once dirname(__FILE__).'/libs/vendor/autoload.php'; // 注册 Twig 加载器 Twig_Autoloader::register(); // 设置基本的配置项 $loader = new Twig_Loader_Filesystem(dirname(__FILE__).'/templates'); $twig = new Twig_Environment($loader, array( 'cache' => dirname(__FILE__).'/templates_c', 'auto_reload' => true ));
- 后续使用时,只需让
web
目录下的PHP
文件引用该公共文件,且在templates
目录下放置好对应的模板即可,引用公共文件的语句为:require_once dirname(dirname(__FILE__)).'/MyTwig.php';
- 基本的模板渲染语句:
echo $twig->render('abc.html.twig', array('name' => 'Ruchee'));
可用符号
==
!=
<
>
>=
<=
+
-
~
*
/
//
%
**
|
[]
.
..
and
or
not
in
is
b-and
b-or
b-xor
部分符号的含义如下
-
~
:连接两字符串,相当于PHP
中的点号 -
//
:整除 -
**
:乘方,相当于PHP
中的^
-
b-and
、b-or
、b-xor
:按位与、按位或、按位异或 -
-
:减法以及去除空白的简写用法,如{{- 数据 }} => 去除左边的空白
、{{ 数据 -}} => 去除右边的空白
、{{- 数据 -}} => 去除两边的空白
变量
可使用 {% set 变量名=变量值 %}
声明变量,也可写成 {% set 变量名 %} 变量值 {% endset %}
PHP
中非关联数组被映射成 [元素1, 元素2, ...]
,关联数组则被映射成 {键1: 值1, 键2: 值2, ...}
数据统一用 foo.bar
的形式表示,如果 bar
是形如 my-name
的名字,则需写成 attribute(foo, 'my-name')
,下面是 Twig
对 foo.bar
的解析顺序:
- 当成数组的元素
foo['bar']
- 当成对象的属性
foo.bar
- 当成对象的方法
foo.bar()
- 调用对象的
get
方法foo.getBar()
- 调用对象的
is
方法foo.isBar()
- 以上都没匹配上则返回
null
几个内建的全局变量
-
_self
:当前模板的引用 -
_context
:当前上下文的引用 -
_charset
:当前字符集设置的引用
测试语句
- 三元运算符。如
{{ '' ? 'a' : 'b' }} => 'b'
xxx is yyy
xxx is not yyy
控制结构
-
{% if aaa %} xxx {% elseif bbb %} yyy {% else %} zzz
:判断语句 -
{% for %} xxx {% endfor %}
:迭代变量 -
{% do %}
:没什么其他含义,{% do 1+2 %}
等同于{{ 1+2 }}
-
{% flush %}
:刷新输出缓冲,等同于flush
-
{% include %}
:包含模板 -
{% extends %}
:扩展模板 -
{% embed %} xxx {% endembed %}
:包含模板并扩展该模板的内容,相当于include
和extends
的结合体 -
{% use %}
:包含模板,近似于多重继承 -
{% from aaa import bbb as ccc %}
:从指定模板导入宏并设置别名 -
{% macro %} xxx {% endmacro %}
:定义宏以便多次调用,与定义PHP
函数无异 -
{% sandbox %} {% include xxx %} {% endsandbox %}
:对导入的模板指定沙箱模式,只对include
语句有效,只在沙箱模式已开启的情况下生效 -
{% block xxx %}
或{% block %} xxx {% endblock %}
:定义代码块或覆盖代码块 -
{% set xxx %}
或{% set %} xxx {% endset %}
:在模板内定义变量 -
{% filter %} xxx {% endfilter %}
:多行过滤器 -
{% spaceless %} xxx {% endspaceless %}
:去除HTML
片段中的空格 -
{% autoescape %} xxx {% endautoescape %}
:将字符串安全地处理成合法的指定数据 -
{% verbatim %} xxx {% endverbatim %}
:阻止模板引擎的编译,是raw
的新名字
内建过滤器
过滤器用来修饰数据,各过滤器可以用竖线分隔进行链式调用,用括号传递参数
也可以将过滤器当成单独的函数来用,形式如下:
{% filter 过滤器名 %} 待处理的数据 {% endfilter %}
-
batch
:将数组按指定的个数分割成更小的数组,可选的第二个参数用来在元素不够的情况下进行填充。如{{ [1, 2, 3, 4, 5]|batch(2, 'NoItem') }} => [[1, 2], [3, 4], [5, 'NoItem']]
-
date_modify
:修改时间,常与date
联用。如{{ ''|date_modify('+3 days')|date('Y-m-d') }} => 将当前时间加3天后显示
-
default
:当所修饰的数据不存在或为空时,提供默认值。如{{ ''|default('Ruchee') }} => 'Ruchee'
-
escape
:将字符串安全地处理成合法的指定数据,可简写为e
,支持多种转换模式,默认模式为html
,其他可选模式有html_attr
、js
、css
、url
-
first
:返回数组的第一个元素或字符串的第一个字符。如{{ {a: 1, b: 2, c: 3}|first }} => 1
-
last
:返回数组的最后一个元素或字符串的最后一个字符。如{{ {a: 1, b: 2, c: 3}|last }} => 3
-
replace
:替换一个字符串中的指定内容。如{{ '%s1 love %s2'|replace({'%s1': 'Ruchee', '%s2': 'Vim'}) }} => 'Ruchee love Vim'
-
raw
:让数据在autoescape
过滤器里失效
借用自PHP自带函数的过滤器
-
abs
:取绝对值 -
nl2br
:将字符串里的\n
替换成<br/>
-
join
:将数组的各个元素按指定分隔符组成字符串 -
sort
:对数组排序 -
trim
:去除字符串首尾的指定字符,默认为空格 -
date
:格式化时间,可处理与strtotime
兼容的字符串,或DateTime/DateInterval
的实例,可选的第二个参数用于指定时区,如果所修饰的数据为空则默认为当前时间 -
reverse
:反转一个数组或字符串,在array_reverse
的基础上增加了对字符串的处理 -
slice
:截取数组或字符串的一部分,在array_slice
的基础上增加了对字符串的处理 -
keys
:将数组的全部键名提取成一个数组,等同于array_keys
-
merge
:合并两数组,近似于array_merge
。如{{ 数组1|merge(数组2) }}
-
length
:返回数组元素的个数或字符串的长度,等同于count
和strlen
的结合体 -
capitalize
:将字符串的首字母大写,等同于ucfirst
-
title
:将字符串中每个单词的首字母大写,等同于ucwords
-
lower
:将字符串所有字母全部变成小写,等同于strtolower
-
upper
:将字符串所有字母全部变成大写,等同于strtoupper
-
split
:将字符串分割成数组,等同于str_split
-
striptags
:去除字符串中的HTML/PHP
标记,等同于strip_tags
-
url_encode
:编码链接字符串,等同于urlencode
-
json_encode
:编码JSON
格式,等同于json_encode
-
format
:格式化一个字符串,近似于printf
。如{{ 'My name is %s, and I love %s'|format('Ruchee', 'Vim') }} => 'My name is Ruchee, and I love Vim'
-
number_format
:格式化数值,等同于number_format
-
convert_encoding
:编码转换,第一个参数指定转换后的编码,第二个参数指定转换前的编码,近似于iconv
内建函数
-
even
:是否为偶数 -
odd
:是否为奇数 -
empty
:是否为空 -
null
:是否为null
-
defined
:是否已定义 -
sameas
:目标变量与指定值是否指向的是内存中的同一个地址,使用形式if 变量值 is sameas(指定值)
-
divisibleby
:目标数值是否能够被指定值整除,使用形式if 目标数值 divisibleby(指定值)
,其中指定值不能为0
-
iterable
:目标变量是否是数组或者是否可迭代,使用形式if 变量值 is iterable
-
attribute
:动态获取变量属性值,两种使用形式为attribute(数组, '元素名')
和attribute(对象, '方法名', 可选参数)
-
block
:重复引用指定代码块,如{{ block('title') }}
-
constant
:从字符串或对象取得常量值 -
cycle
:循环显示一个数组的元素,调用形式为cycle(数组, 一个循环变量)
-
date
:格式化时间 -
dump
:在开启调试模式的情况下显示详细的变量信息,等同于var_dump
-
include
:包含其他模板文件 -
parent
:在覆盖代码片段时用于引用父片段的内容 -
random
:制造一个随机数 -
range
:返回一个指定区间的数组,可指定步长,Twig
使用..
作为其简用法,等同于range
-
template_from_string
:根据字符串加载模板
相关推荐
首先,安装Twig模板引擎需要通过Composer包管理器。在新建的`libs`目录下创建`composer.json`文件,并配置所需的`twig/twig`包。然后运行`composer install`命令进行安装。同时,需要创建`templates`目录存储模板...
在Laravel框架中,开发者通常使用Blade模板引擎来构建视图层,然而,对于习惯于使用Twig模板引擎的人来说,`Laravel-TwigBridge`提供了一个桥梁,使得在Laravel项目中可以无缝集成并使用Twig。`TwigBridge`是Laravel...
文档还提到了Twig的一些注意事项和最佳实践,比如在使用Twig时应该遵循的编码标准,以及如何安全地处理模板,避免潜在的安全问题。 Twig的设计原则之一是安全性。它具备防止注入攻击的特性,比如防止XSS攻击,这在...
标题中的"29、Twig模板引擎安装1"指的是在Symfony框架中进行Twig模板引擎的安装教程的第一部分。描述提到了在开发环境中,由于之前安装了debug组件,`twig-bundle`可能已经被自动添加到`composer.json`的依赖项中。...
sprig, Sprig是一个WordPress...使用 Twig 模板引擎的难以置信强大功能,更快更容易地创建主题。 它的功能是下划线 和 Twigpress,Sprig具有大量的功能和有用的WordPress功能,这些功能都是。默认情况下,Sprig附带 B
【Twig模板引擎】是一个强大的PHP模板处理库,旨在提供高效、安全且灵活的模板解决方案。它的设计理念是让设计师和开发者能够轻松地分离视图层逻辑,以实现更清晰的代码结构。以下是对Twig模板引擎的一些关键知识点...
在Laravel框架中,虽然默认使用的是Blade模板引擎,但通过扩展,开发者可以选择使用Twig作为替代,实现更丰富的模板设计模式。 Laravel 5是这个项目所针对的版本,它是一个成熟的、基于MVC架构的PHP web开发框架。...
在本教程中,我们将探讨如何将HTML模板转换为Twig模板,这是Symfony框架中常用的一种模板引擎。我们将基于《Symfony 5全⾯开发》视频教程,了解如何构建和组织一个基本的网页布局,包括定义和使用预定义的区块,以及...
Twig Cache Extension是一个专门为Twig模板引擎设计的扩展,用于提高应用性能,通过缓存模板的片段来减少不必要的PHP解析和模板渲染时间。这个类库适用于那些使用Twig作为视图层的PHP项目,尤其对于高流量或者资源...
App Engine PHP Slim + Twig ...使用 Slim 框架和 Twig 模板引擎的 App Engine PHP 的简单模板项目。 安装 使用 composer install 下载依赖项。 您将需要 App Engine SDK 来启动服务器 ( ) 执照 麻省理工学院执照
在Yii框架中使用Twig,主要涉及到如何集成Twig作为模板引擎以及如何编写Twig模板。Twig模板语言与传统的PHP模板相比,更简洁、安全,因为它不允许在模板中直接编写PHP代码,减少了XSS攻击的风险,并且内置了很多过滤...
Twig是一个开源的模板引擎,广泛用于Web开发中,尤其是结合Symfony框架时。其主要目的是为了简化PHP代码的编写,通过模板引擎将逻辑代码与显示代码分离,提高代码的可读性和维护性。Twig模板语言的语法简洁明了,...
将 Twig 模板引擎带入 Terrific Micro 目录 安装 你需要: v1.0.0 或更新版本 项目扩展文件夹中的文件;-) cd project/extensions git clone https://github.com/namics/terrific-micro-twig.git rm -rf ...
Twig Cache Extension 是一个针对PHP中的Twig模板引擎设计的扩展,主要目标是提高应用程序的性能,通过缓存模板的片段来减少不必要的重复渲染。这个库特别适用于那些使用Twig作为视图层,且对页面加载速度有较高要求...
使用Laravel与Twig集成的优点在于,开发者可以根据个人喜好选择模板引擎,尤其是对于熟悉Symfony或更喜欢Twig语法的团队。缺点可能是学习曲线,因为需要同时掌握Laravel和Twig,且社区支持和文档相比Blade可能较少。...
Twig拥有一个Sandbox模型来检测不可信的模板代码。Twig由一个灵活的词法分析器和语法分析器组成,可以让开发人员定义自己的标签,过滤器并创建自己的DSL。 示例模板: {% extends "layout....
- **Blade**:是Laravel框架内置的模板引擎,简洁且强大,特别适合Laravel开发者使用。 【压缩包子文件的文件名称列表】:DawnThingCB-Wetpl-bb197f1 这个文件名可能是某个特定的轻量级PHP模板引擎的版本号或者是...
### TWIG模板引擎使用文档 #### 一、简介 Twig 是一个用于 PHP 的现代、安全且快速的模板引擎。它采用简洁的语法设计,易于学习并具有强大的功能。Twig 支持诸如变量、循环、条件判断等常见的编程结构,并且在安全...