¿Alguien sabe cómo concatenar cadenas en ramita? Quiero hacer algo como:
{{ concat('http://', app.request.host) }}
syntax
twig
string-concatenation
templating
Stoefln
fuente
fuente

{% set foo = 'http://' ~ app.request.host %}. Y entonces usted puede hacer:{{ foo | trans }}.{{ form_open('admin/files/?path='~file_path|urlencode)|raw }}no es necesaria una variable adicional.También una característica poco conocida en Twig es la interpolación de cadenas :
fuente
El operador que está buscando es Tilde (~), como dijo Alessandro, y aquí está en la documentación:
Y aquí hay un ejemplo en otro lugar de los documentos :
fuente
En este caso, donde desea generar texto plano y una variable, puede hacerlo así:
Si desea concatenar algunas variables, la solución de alessandro1997 sería mucho mejor.
fuente
Como puede ver, esto funciona con filtros y funciones sin necesidad de usar
seten una línea separada.fuente
Siempre que necesite usar un filtro con una cadena concatenada (o una operación matemática básica) debe envolverlo con (). P.ej.:
{{ ('http://' ~ app.request.host) | url_encode }}fuente
En Symfony puede usar esto para protocolo y host:
Aunque @ alessandro1997 dio una respuesta perfecta sobre la concatenación.
fuente
Puedes usar
~como{{ foo ~ 'inline string' ~ bar.fieldName }}Pero también puede crear su propia
concatfunción para usarla como en su pregunta{{ concat('http://', app.request.host) }}:En
src/AppBundle/Twig/AppExtension.phpEn
app/config/services.yml:fuente
Respuesta rápida (TL; DR)
format()filtroRespuesta detallada
Contexto
Problema
formatfiltro que es más expresivo.Solución
formatfiltroformatfiltro funciona como lasprintffunción en otros lenguajes de programación.formatfiltro puede ser menos engorroso que el operador ~ para cadenas más complejasEjemplo00
ejemplo00 cuerda concat desnuda
Formato {{"% s% s% s!" | ('alpha', 'bravo', 'charlie')}} --- resultado - alphabravocharlie!Ejemplo01
ejemplo01 cadena concat con texto intermedio
{{"¡El% s en% s cae principalmente en el formato% s!" | ('Alpha', 'bravo', 'charlie')}} --- resultado - ¡El alfa en bravo cae principalmente en el charlie!Ejemplo02
sigue la misma sintaxis que
sprintfen otros idiomas{{"El% 04d en% 04d cae principalmente en el formato% s!" | (2,3, 'árbol')}} --- resultado - ¡El 0002 en 0003 cae principalmente en el árbol!Ver también
fuente
Para mezclar cadenas, variables y traducciones, simplemente hago lo siguiente:
A pesar de que todo está mezclado, funciona a las mil maravillas.
fuente
El delimitador "{{...}}" también se puede usar dentro de cadenas:
fuente