Как объединить строки в веточку



кто-нибудь знает, как объединить строки в Twig? Я хочу сделать что-то вроде:



{{ concat('http://', app.request.host) }}
698   11  

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
  • построение и конкатенация строк

The" {{... }} "- разделитель также может использоваться в строках:

"http://{{ app.request.host }}"

Comments

    Ничего не найдено.