¿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
set
en 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
concat
función para usarla como en su pregunta{{ concat('http://', app.request.host) }}
:En
src/AppBundle/Twig/AppExtension.php
En
app/config/services.yml
:fuente
Respuesta rápida (TL; DR)
format()
filtroRespuesta detallada
Contexto
Problema
format
filtro que es más expresivo.Solución
format
filtroformat
filtro funciona como lasprintf
función en otros lenguajes de programación.format
filtro puede ser menos engorroso que el operador ~ para cadenas más complejasEjemplo00
ejemplo00 cuerda concat desnuda
Ejemplo01
ejemplo01 cadena concat con texto intermedio
Ejemplo02
sigue la misma sintaxis que
sprintf
en otros idiomasVer 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