Symfony Twig扩展

3.3 版本
维护中的版本

Twig是Symfony默认的模板引擎。它自己的包含了大量内置函数、变量调节器,标签和测试等(更多内容请参考Twig参考)。

Symfony在此基础上添加了自定义扩展,把一些组件整合到Twig模板中。以下小节就分别解释了这些自定义的function(函数),filters(调节器),tags(标签)和tests(测试),当使用Symfony完整版时它们都是可以使用的。

也许你在使用的bundle中的一些标签没有列在这里。

Twig函数 

render 

1
{{ render(uri, options = []) }}
uri
值类型: string | ControllerReference
options (可选)
值类型: array 默认值: []

为给定的控制器或URI渲染(页面的)片断 (使用 controller 函数)。更多信息,请参考 如何在模板中嵌入控制器

渲染策略可以在 strategy 键选项中指定。

URI可以由其他函数来生成,像是 path and url.


render_esi 

1
{{ render_esi(uri, options = []) }}
uri
值类型: string | ControllerReference
options (可选)
值类型: array 默认值: []

在可能的情况下生成一个ESI标签,或者回滚到 render 函数的行为。 更多信息,参考 如何在模板中嵌入控制器

URI可以由其他函数来生成,像是 path and url.

render_esi()render 快捷方法的一个例子。它自动地基于函数名称所给定的(策略信息)来设置策略,比如 render_hinclude() 将使用 hinclude.js 策略。这种方式适用于所有 render_*() 函数。


controller 

1
{{ controller(controller, attributes = [], query = []) }}
controller
值类型: string
attributes (可选)
值类型: array 默认值: []
query (可选)
值类型: array 默认值: []

返回 ControllerReference 实例,用于诸如 render()render_esi() 等函数。


asset 

1
{{ asset(path, packageName = null) }}
path
值类型: string
packageName (可选)
值类型: string | null 默认值: null

返回 path 的public路径,该路径负责打点“设置给package的基本路径”和“URL路径”。更多信息请参考 连接到assets。对于asset versioning(资源版本),参考 version


assets_version 

1
{{ assets_version(packageName = null) }}
packageName (可选)
值类型: string | null 默认值: null

返回package的当前版本,更多信息请参考 链接到Assets.


form 

1
{{ form(view, variables = []) }}
view
值类型: FormView
variables (可选)
值类型: array 默认值: []

返回一个完整表单的HTML标签,更多信息请参考 Twig表单参考


form_start 

1
{{ form_start(view, variables = []) }}
view
值类型: FormView
variables (可选)
值类型: array 默认值: []

返回一个表单的HTML开始标签,更多信息请参考 Twig表单参考


form_end 

1
{{ form_end(view, variables = []) }}
view
值类型: FormView
variables (可选)
值类型: array 默认值: []

返回一个表单的HTML结束标签,更多信息请参考 Twig表单参考


form_widget 

1
{{ form_widget(view, variables = []) }}
view
值类型: FormView
variables (可选)
值类型: array 默认值: []

返回一个完整表单,或返回某个字段的特定HTML小部件(widget),更多信息请参考 Twig表单参考


form_errors 

1
{{ form_errors(view) }}
view
值类型: FormView

渲染(译注:由程序向模板输出的过程,在Symfony中常被称作渲染)给定字段的任何错误信息,或全局错误,更多信息请参考 Twig表单参考


form_label 

1
{{ form_label(view, label = null, variables = []) }}
view
值类型: FormView
label (可选)
值类型: string 默认值: null
variables (可选)
值类型: array 默认值: []

渲染给定字段的label部分,更多信息请参考 Twig表单参考


form_row 

1
{{ form_row(view, variables = []) }}
view
值类型: FormView
variables (可选)
值类型: array 默认值: []

渲染给定字段的row部分(包括该字段的label,errors以及widget),更多信息请参考 Twig表单参考


form_rest 

1
{{ form_rest(view, variables = []) }}
view
值类型: FormView
variables (可选)
值类型: array 默认值: []

渲染尚未被渲染的全部字段,更多信息请参考 Twig表单参考


csrf_token 

1
{{ csrf_token(intention) }}
intention
值类型: string

渲染一个CSRF token。当你“没有创建表单”时,若需要CSRF防护,可以使用本函数。


is_granted 

1
{{ is_granted(role, object = null, field = null) }}
role
值类型: string
object (可选)
值类型: object
field (可选)
值类型: string

返回 true,如果当前用户拥有所需的role的话。可选的,可以传入一个Voter需要用到的对象。更多信息,可以在 模版中的访问控制

对于一个特定字段,你也可以把它传入,以使用ACE。关于此部分的更多内容,参考 访问控制入口项的范围


logout_path 

1
{{ logout_path(key = null) }}
key (可选)
值类型: string

为给定的firewall(防火墙)生成一个相对的logout URL(退出链接)。如果没有提供key,则URL的生成是针对“用户登陆进来时所用到的”防火墙。


logout_url 

1
{{ logout_url(key = null) }}
key (可选)
值类型: string

等同于 logout_path 函数,但是它只生成绝对URL而非相对。


path 

1
{{ path(name, parameters = [], relative = false) }}
name
值类型: string
parameters (可选)
值类型: array 默认值: []
relative (可选)
值类型: boolean 默认值: false

为给定的路由返回相对URL (没有scheme和host)。如果 relative 开启,它将创建一个相对于当前路径的path。更多信息请参考 链接到页面

阅读 路由 to 以了解更多关于路由组件的内容。

url 

1
{{ url(name, parameters = [], schemeRelative = false) }}
name
值类型: string
parameters (可选)
值类型: array 默认值: []
schemeRelative (可选)
值类型: boolean 默认值: false

为给定的路由返回绝对对URL (有scheme和host) 。如果 schemeRelative 开启,它将创建一个scheme-relative的URL(相对于scheme)。更多信息请参考 链接到页面

阅读 路由 to 以了解更多关于路由组件的内容。

absolute_url 

1
{{ absolute_url(path) }}
path
值类型: string

从传入的相对路径中,返回绝对URL。例如,假设你访问的是这个程序页面:http://example.com/products/hover-board

1
2
3
4
5
{{ absolute_url('/human.txt') }}
{# http://example.com/human.txt #}
 
{{ absolute_url('products_icon.png') }}
{# http://example.com/products/products_icon.png #}

relative_path 

1
{{ relative_path(path) }}
path
值类型: string

从传入的绝对路径中,返回相对URL。例如,假设你访问的是这个程序页面:http://example.com/products/hover-board

1
2
3
4
5
{{ relative_path('http://example.com/human.txt') }}
{# ../human.txt #}
 
{{ relative_path('http://example.com/products/products_icon.png') }}
{# products_icon.png #}

expression 

在Twig中创建 Expression 实例。参考 "模板中的表达式"。


Twig变量调节器 

humanize 

1
{{ text|humanize }}
text
值类型: string

让一个技术向的名称变成人类可读 (如,把下划线改成空格,或把camelCase驼峰文本,比如 helloWorld 转换成 hello world,其后对字符串大写)。


trans 

1
{{ message|trans(arguments = [], domain = null, locale = null) }}
message
值类型: string
arguments (可选)
值类型: array 默认值: []
domain (可选)
值类型: string 默认值: null
locale (可选)
值类型: string 默认值: null

把文本翻译成当前语种信息。更多信息请参考 模板中的翻译


transchoice 

1
{{ message|transchoice(count, arguments = [], domain = null, locale = null) }}
message
值类型: string
count
值类型: integer
arguments (可选)
值类型: array 默认值: []
domain (可选)
值类型: string 默认值: null
locale (可选)
值类型: string 默认值: null

在对文本进行翻译时添加多元化(pluralization)的支持。更多信息请参考 模板中的翻译


yaml_encode 

1
{{ input|yaml_encode(inline = 0, dumpObjects = false) }}
input
值类型: mixed
inline (可选)
值类型: integer 默认值: 0
dumpObjects (可选)
值类型: boolean 默认值: false

把输入的内容转换成YAML语法,参考 写入YAML文件 以了解更多。


yaml_dump 

1
{{ value|yaml_dump(inline = 0, dumpObjects = false) }}
value
值类型: mixed
inline (可选)
值类型: integer 默认值: 0
dumpObjects (可选)
值类型: boolean 默认值: false

yaml_encode()同样的事,但却在输出内容中包括了类型(type)。


abbr_class 

1
{{ class|abbr_class }}
class
值类型: string

生成一个 <abbr> 元素,带有一个PHP类的短名 (若用户把鼠标放在该元素上,会显示一个FQCN的tooltip提示框)。


abbr_method 

1
{{ method|abbr_method }}
method
值类型: string

生成一个 <abbr> 元素,使用了 FQCN::method() 语法。如果 methodClosure的话, Closure 将被使用。如果 method 并没有一个类名的话,它会显示为一个函数 (method())。


format_args 

1
{{ args|format_args }}
args
值类型: array

生成一个带有参数及其类型的字符串 (在 <em> 元素中)。


format_args_as_text 

1
{{ args|format_args_as_text }}
args
值类型: array

等同于 format_args 调节器,但不使用HTML标签。


file_excerpt 

1
{{ file|file_excerpt(line = null) }}
file
值类型: string
line (可选)
值类型: integer

围绕给定的 line 生成一个七行的摘要。


format_file 

1
{{ file|format_file(line, text = null) }}
file
值类型: string
line
值类型: integer
text (可选)
值类型: string 默认值: null

<a> 元素中生成一个文件路径。如果路径位于kernel root directory(kernel根目录),kernel root directory路径会被 kernel.root_dir 替代 (在鼠标hover状态下显示完整路径的提示框)。


format_file_from_text 

1
{{ text|format_file_from_text }}
text
值类型: string

使用 format_file 来改进默认的PHP错误信息输出。


file_link 

1
{{ file|file_link(line = null) }}

对给定的文件生成一个链接(行号是可选的),使用的是一个预配置(preconfigured)scheme。

Twig标签 

form_theme 

1
{% form_theme form resources %}
form
值类型: FormView
resources
值类型: array | string

设置 resource 来覆写“给定的表单view实例” 之表单主题(form theme)。你可以使用 _self 作为 resources,即可把它设置为当前的resource。 更多内容请参考 如何自定义表单渲染


trans 

1
{% trans with vars from domain into locale %}{% endtrans %}
vars (可选)
值类型: array 默认值: []
domain (可选)
值类型: string 默认值: string
locale (可选)
值类型: string 默认值: string

对内容的翻译进行渲染。更多内容请参考 Twig模板


transchoice 

1
{% transchoice count with vars from domain into locale %}{% endtranschoice %}
count
值类型: integer
vars (可选)
值类型: array 默认值: []
domain (可选)
值类型: string 默认值: null
locale (可选)
值类型: string 默认值: null

对内容的翻译进行“支持多元化”的渲染。更多内容请参考 Twig模板


trans_default_domain 

1
{% trans_default_domain domain %}
domain
值类型: string

对当前模板中的默认domain(翻译域)进行设置。


stopwatch 

1
{% stopwatch 'name' %}...{% endstopwatch %}

对标签内的代码的运行进行“计时”,并把相关信息置入WebProfilerBundle的时间线中。


Twig测试 

selectedchoice 

1
{% if choice is selectedchoice(selectedValue) %}
choice
type: ChoiceView
selectedValue
type: string

检查 selectedValue 值是否被提交过来的choice字段所“选中(checked)”。使用它进行测试是最为高效的方式。

全局模板变量 

app 

app 可以随处使用,可以访问到大量常用的对象连同其值。它是 GlobalVariables 的实例。

  • app.user
  • app.request
  • app.session
  • app.environment
  • app.debug

Symfony标准版Twig扩展 

Symfony标准版在Symfony核心框架中添加了一些bundles。这些bundles,都有其他的Twig扩展:

本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。

登录symfonychina 发表评论或留下问题(我们会尽量回复)