11 ответов:
Это должно работать нормально:
{{ 'http://' ~ app.request.host }}чтобы добавить фильтр типа 'trans' - в том же теге используйте
{{ ('http://' ~ app.request.host) | trans }}как Адам Элсодани указывает, вы также можете использовать интерполяция строк, для этого требуются строки в двойных кавычках:
{{ "http://#{app.request.host}" }}
также малоизвестная функция в Twig-это интерполяция строк:
{{ "http://#{app.request.host}" }}
в этом случае, когда вы хотите вывести простой текст и переменную, вы можете сделать это следующим образом:
http://{{ app.request.host }}Если вы хотите объединить некоторые переменные, решение alessandro1997 было бы намного лучше.
оператор, который вы ищете, - это Тильда ( ~ ), как сказал Алессандро, и вот он в документации:
~: преобразует все операнды в строки и объединяет их. {{ "Привет "~ имя ~"!"}} вернется (предполагая, что имя "Джон") Привет Джон!. – http://twig.sensiolabs.org/doc/templates.html#other-operators
а вот пример где-то еще в документах:
{% set greeting = 'Hello' %} {% set name = 'Fabien' %} {{ greeting ~ name|lower }} {# Hello fabien #} {# use parenthesis to change precedence #} {{ (greeting ~ name)|lower }} {# hello fabien #}
{{ ['foo', 'bar'|capitalize]|join }}Как вы можете видеть это работает с фильтрами и функциями без необходимости использовать
setна отдельной линии.
всякий раз, когда вам нужно использовать фильтр с конкатенированной строкой (или базовой математической операцией), вы должны обернуть его с помощью (). например.:
{{ ('http://' ~ app.request.host) | url_encode }}
в Symfony вы можете использовать это для протокола и Хоста:
{{ app.request.schemeAndHttpHost }}хотя @alessandro1997 дал идеальный ответ о конкатенации.
можно использовать
~как{{ foo ~ 'inline string' ~ bar.fieldName }}но вы также можете создать свой собственный
для смешивания строк, переменных и переводов я просто делаю следующее:
{% 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> ' %}несмотря на то, что все смешивается, это работает как шарм.
быстрый ответ (TL;DR)
- конкатенация строк ветки также может быть выполнена с помощью
format()фильтрПодробный Ответ
контекст
- ветка 2.x
- построение и конкатенация строк
Comments