有人知道如何连接树枝中的字符串吗?我想做的事情是:
{{ concat('http://', app.request.host) }}
这应该可以正常工作:
\{\{ 'http://' ~ app.request.host }}
在相同的标签中添加一个过滤器,如“trans”
\{\{ ('http://' ~ app.request.host) | trans }}
作为亚当·埃尔索丹尼指出,你也可以使用字符串插值,这需要双引号字符串:
\{\{ "http://#{app.request.host}" }}
在这种情况下,你想输出纯文本和一个变量,你可以这样做:
http://\{\{ app.request.host }}
如果你想连接一些变量,alessandro1997的解决方案会更好。
\{\{ ['foo', 'bar'|capitalize]|join }}
正如你所看到的,这与过滤器和函数一起工作,而不需要在单独的行上使用set。
set
在Symfony中,您可以将此用于协议和主机:
\{\{ app.request.schemeAndHttpHost }}
尽管@alessandro1997给出了一个关于串联的完美答案。
当您需要使用带有连接字符串(或基本数学操作)的过滤器时,您应该使用()来包装它。如:
# EYZ0
混合字符串,变量和翻译,我简单地做以下:
{% set add_link = ' <a class="btn btn-xs btn-icon-only" title="' ~ 'string.to_be_translated'|trans ~ '" href="' ~ path('acme_myBundle_link',{'link':link.id}) ~ '"> </a> ' %}
尽管所有的东西都混在一起了,但它却像魔法一样有效。
你要找的操作符是Tilde(~),就像Alessandro说的,这里是在文档中:
~:将所有操作数转换为字符串并连接它们。\{\{“你好 " ~名字~ "!"}}将返回(假设名字是“John”)你好,John!。mdash;# EYZ0 < / p >
这里有一个例子在医生的其他地方:
{% set greeting = 'Hello' %} {% set name = 'Fabien' %} \{\{ greeting ~ name|lower }} {# Hello fabien #} {# use parenthesis to change precedence #} \{\{ (greeting ~ name)|lower }} {# hello fabien #}
Twig还有一个鲜为人知的功能字符串插值:
“\{\{…”-分隔符也可以在字符串中使用:
"http://\{\{ app.request.host }}"
你可以像使用\{\{ foo ~ 'inline string' ~ bar.fieldName }}一样使用~
\{\{ foo ~ 'inline string' ~ bar.fieldName }}
~
concat
在# EYZ0
<?php namespace AppBundle\Twig; class AppExtension extends \Twig_Extension { /** * {@inheritdoc} */ public function getFunctions() { return [ new \Twig_SimpleFunction('concat', [$this, 'concat'], ['is_safe' => ['html']]), ]; } public function concat() { return implode('', func_get_args()) } /** * {@inheritdoc} */ public function getName() { return 'app_extension'; } }
在# EYZ0:
services: app.twig_extension: class: AppBundle\Twig\AppExtension public: false tags: - { name: twig.extension }
format()
format
sprintf
example00 string concat bare
\{\{ "%s%s%s!"|format('alpha','bravo','charlie') }} --- result -- alphabravocharlie!
example01 string concat with intervening text
\{\{ "The %s in %s falls mainly on the %s!"|format('alpha','bravo','charlie') }} --- result -- The alpha in bravo falls mainly on the charlie!
follows the same syntax as sprintf in other languages
\{\{ "The %04d in %04d falls mainly on the %s!"|format(2,3,'tree') }} --- result -- The 0002 in 0003 falls mainly on the tree!