twig树枝入门


备注

本节概述了twig是什么,以及开发人员可能想要使用它的原因。

它还应该提到枝条内的任何大型主题,并链接到相关主题。由于twig的文档是新的,您可能需要创建这些相关主题的初始版本。

基本API使用

也可以通过下载源代码并将其放在项目的目录中来安装它。但是,使用composer有很多好处。

require '/path/to/lib/Twig/Autoloader.php';
Twig_Autoloader::register();

$loader = new Twig_Loader_Filesystem('/path/to/templates');

$options = array(
    'strict_variables' => false,
    'debug' => false,
    'cache'=> false
);

$twig = new Twig_Environment($loader, $options);
 

在创建新的Twig_Environment 实例时,您可以传递一个选项数组作为构造函数的第二个参数。以下是可用选项的列表:

  • debug( 布尔值 ,默认值false

设置为true时,生成的模板具有__toString() 方法,可用于显示生成的节点。

  • charset( 字符串 ,默认utf-8

模板使用的字符集。

  • base_template_class( 字符串 ,默认Twig_Template

用于生成模板的基本模板类。

  • cache( 字符串或false ,默认为false

存储已编译模板的绝对路径,或false以禁用缓存(这是默认值)。

  • auto_reload( boolean ,默认继承自debug

使用Twig进行开发时,每当源代码更改时重新编译模板都很有用。如果没有为auto_reload选项提供值,则将根据调试值自动确定该值。

  • strict_variables( 布尔值 ,默认值false

如果设置为false,Twig将默默地忽略无效变量(变量和/或不存在的属性/方法),并用空值替换它们。设置为true时,Twig会抛出异常。

  • autoescape( 字符串或布尔值 ,默认为true

如果设置为true,则默认情况下将为所有模板启用HTML自动转义。

从Twig 1.8开始,您可以设置要使用的转义策略(html,js,false禁用)。

从Twig 1.9开始,您可以设置要使用的转义策略(css,url,html_attr或带有模板“filename”的PHP回调,并且必须返回要使用的转义策略 - 回调不能是要避免的函数名称与内置逃逸策略的碰撞)。

从Twig 1.17开始,文件名转义策略根据模板文件扩展名确定用于模板的转义策略(此策略在运行时不会产生任何开销,因为自动转义是在编译时完成的。)

  • 优化( 整数 ,默认-1

一个标志,指示要应用的优化:
set to -1 to enabled all optimalizations
set o 0 to disable all optimalitazations

官方Twig安装指南

还可以编译和安装Twig PHP扩展(用C编写),PHP包将自动利用它来优化一些常见例程。

介绍

如果您有任何接触到其他基于文本的模板语言如Smarty的Django的 ,或神社 ,你应该感到像在家里用的树枝 。通过坚持PHP的原则并添加对模板环境有用的功能,它既是设计人员又是开发人员友好的。

关键特征是......

  • 快速: Twig将模板编译为简单优化的PHP代码。与常规PHP代码相比,开销降至最低。
  • 安全: Twig具有沙盒模式来评估不受信任的模板代码。这允许Twig用作用户可以修改模板设计的应用程序的模板语言。
  • 灵活: Twig由灵活的词法分析器解析器提供支持 。这允许开发人员定义他们自己的自定义标签过滤器 ,并创建自己的DSL。

树枝被许多开源项目一样的SymfonyDrupal的eZPublish许多框架都有对它的支持,以及像超薄Yii的Laravel硅石Kohana的 -只是仅举几例。

安装

安装Twig的推荐方法是通过Composer

对于PHP 5.x用户

composer require "twig/twig:~1.0"
 

对于php 7.x用户

composer require "twig/twig:~2.0"
 

什么是Twig?

Twig是一种模板化语言,可编译为优化的PHP代码。它主要用于输出HTML,但也可用于输出任何其他基于文本的格式。它是一个独立的组件,可以轻松集成到任何PHP项目中。

它提供了许多出色的功能:

  • Autoescaping for HTML(有助于防止XSS)
  • 设计时考虑了模板的语法(基于Django模板)
  • 模板继承

官方Twig模板文档

Twig的语法示例:

{% extends "base.html" %}

{% block sidebar %}
  {{ parent() }}
  <span>Sidebar content specific to this page</span>
{% endblock sidebar %}

{% block body %}
  <p>Select an item:</p>
  <ul>
    {% for item in list %}
      <li><a href="/items/{{ item.id }}">{{ item.name }}</a>
    {% else %}
      <li>No items yet.
    {% endfor %}
  </ul>
{% endblock body %}