有人知道如何连接树枝中的字符串吗?我想做的事情是:
{{ concat('http://', app.request.host) }}
有人知道如何连接树枝中的字符串吗?我想做的事情是:
{{ concat('http://', app.request.host) }}
这应该可以正常工作:
{{ 'http://' ~ app.request.host }}
在相同的标签中添加一个过滤器,如“trans”
{{ ('http://' ~ app.request.host) | trans }}
正如Adam Elsodaney指出的,你也可以使用字符串插值,这确实需要双引号字符串:
{{ "http://#{app.request.host}" }}
在这种情况下,你想输出纯文本和一个变量,你可以这样做:
http://{{ app.request.host }}
如果你想连接一些变量,alessandro1997的解决方案会更好。
在Symfony中,您可以将此用于协议和主机:
{{ app.request.schemeAndHttpHost }}
尽管@alessandro1997给出了一个关于串联的完美答案。
当您需要使用带有连接字符串(或基本数学操作)的过滤器时,您应该使用()来包装它。如:
{{('http://' ~ app.request.host) | url_encode}}
混合字符串,变量和翻译,我简单地做以下:
{% 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!。——http://twig.sensiolabs.org/doc/templates.html其他运营商
这里有一个例子在文档的其他地方:
{% set greeting = 'Hello' %}
{% set name = 'Fabien' %}
{{ greeting ~ name|lower }} {# Hello fabien #}
{# use parenthesis to change precedence #}
{{ (greeting ~ name)|lower }} {# hello fabien #}
你可以使用~,比如{{foo ~ 'inline string' ~ bar。字段名}}
但你也可以创建自己的concat函数来使用它,就像在你的问题中那样: {{concat('http://', app.request.host)}}:
在src / AppBundle -树枝AppExtension。php
<?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';
}
}
在app / config / services.yml:
services:
app.twig_extension:
class: AppBundle\Twig\AppExtension
public: false
tags:
- { name: twig.extension }
快速回答(TL;DR)
细枝字符串连接也可以用format()过滤器完成
详细的回答
上下文
嫩枝2.倍 字符串构建和连接
问题
场景:DeveloperGailSim希望在Twig中进行字符串连接 这个线程中的其他答案已经解决了concat操作符 这个答案集中在更有表现力的格式筛选器上
解决方案
另一种方法是使用格式筛选器 格式过滤器的工作原理类似于其他编程语言中的sprintf函数 对于更复杂的字符串,格式过滤器可能没有~操作符那么麻烦
Example00
Example00字符串连接空 {{"%s%s%s!"|格式('alpha','bravo','charlie')}} ——结果—— alphabravocharlie !
Example01
Example01字符串与中间文本连接 {{" %s中的%s主要落在%s上!"|格式('alpha','bravo','charlie')}} ——结果—— b组的阿尔法主要攻击查理!
Example02
使用数字格式的Example02字符串连接 遵循与其他语言中的sprintf相同的语法 {{" %04d中的%04d主要落在%s!"|格式(2,3,'tree')}} ——结果—— 0003中的0002主要落在树上!
另请参阅
http://twig.sensiolabs.org/doc/2.x/filters/format.html https://stackoverflow.com/tags/printf/info