如何连接树枝中的字符串
有人知道如何在树枝中连接字符串吗?我想做类似的事情:
{{ concat('http://', app.request.host) }}
Anyone knows how to concatenate strings in twig? I want to do something like:
{{ concat('http://', app.request.host) }}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
这应该可以正常工作:
要在同一标签中添加过滤器(例如“trans”),请使用
正如Adam Elsodaney指出的,您还可以使用 字符串插值,这确实需要双引号字符串:
This should work fine:
To add a filter - like 'trans' - in the same tag use
As Adam Elsodaney points out, you can also use string interpolation, this does require double quoted strings:
Twig 中还有一个鲜为人知的功能是字符串插值:
Also a little known feature in Twig is string interpolation:
您要查找的运算符是波浪号 (~),就像 Alessandro 所说,它位于文档中:
这是一个示例 文档中的其他位置:
The operator you are looking for is Tilde (~), like Alessandro said, and here it is in the documentation:
And here is an example somewhere else in the docs:
在这种情况下,如果你想输出纯文本和一个变量,你可以这样做:
如果你想连接一些变量,alessandro1997的解决方案会更好。
In this case, where you want to output plain text and a variable, you could do it like this:
If you want to concatenate some variables, alessandro1997's solution would be much better.
正如您所看到的,这适用于过滤器和函数,而无需在单独的行上使用
set
。As you can see this works with filters and functions without needing to use
set
on a seperate line.每当您需要使用带有连接字符串(或基本数学运算)的过滤器时,您应该用 () 括起来。例如:
{{ ('http://' ~ app.request.host) | url_encode }}
Whenever you need to use a filter with a concatenated string (or a basic math operation) you should wrap it with ()'s. Eg.:
{{ ('http://' ~ app.request.host) | url_encode }}
您可以像
{{ foo ~ 'inline string' ~ bar.fieldName }}
使用~
但您也可以创建自己的
concat
函数像您的问题一样使用它:{{ concat('http://', app.request.host) }}
:在
src/AppBundle/Twig/AppExtension.php
中 在
app/ 中配置/services.yml:
You can use
~
like{{ foo ~ 'inline string' ~ bar.fieldName }}
But you can also create your own
concat
function to use it like in your question:{{ concat('http://', app.request.host) }}
:In
src/AppBundle/Twig/AppExtension.php
In
app/config/services.yml
:在 Symfony 中,您可以将其用于协议和主机:
尽管 @alessandro1997 给出了关于串联的完美答案。
In Symfony you can use this for protocol and host:
Though @alessandro1997 gave a perfect answer about concatenation.
快速回答(TL;DR)
format()
过滤器完成详细答案
上下文
问题
格式
过滤器解决方案
format
过滤器format< /code> 过滤器的工作方式类似于其他编程语言中的
sprintf
函数format
过滤器可能比 ~ 运算符更方便Example00
example00 string concat bare
<前>
{{ "%s%s%s!"|format('alpha','bravo','charlie') }}
- - 结果 -
阿尔法布拉沃查理!
示例01
example01 字符串连接与中间文本
<前>
{{ "%s 中的 %s 主要落在 %s!"|format('alpha','bravo','charlie') }}
- - 结果 -
《Bravo》中的阿尔法主要落在查理身上!
Example02
example02 字符串连接与数字格式
遵循与其他语言中的
sprintf
相同的语法<前>
{{“%04d 中的 %04d 主要落在 %s 上!”|format(2,3,'tree') }}
- - 结果 -
0003中的0002主要落在树上!
另请参阅
Quick Answer (TL;DR)
format()
filterDetailed Answer
Context
Problem
format
filter which is more expressiveSolution
format
filterformat
filter works like thesprintf
function in other programming languagesformat
filter may be less cumbersome than the ~ operator for more complex stringsExample00
example00 string concat bare
Example01
example01 string concat with intervening text
Example02
example02 string concat with numeric formatting
follows the same syntax as
sprintf
in other languagesSee also
为了混合字符串、变量和翻译,我只需执行以下操作:
尽管所有内容都混合在一起,但它的工作方式就像一个魅力。
To mix strings, variables and translations I simply do the following:
Despite everything being mixed up, it works like a charm.
“{{ ... }}”分隔符也可以在字符串中使用:
The "{{ ... }}"-delimiter can also be used within strings: