Quelqu'un sait comment concaténer des cordes en brindille? Je veux faire quelque chose comme:
{{ concat('http://', app.request.host) }}
Quelqu'un sait comment concaténer des cordes en brindille? Je veux faire quelque chose comme:
{{ concat('http://', app.request.host) }}
Cela devrait fonctionner correctement:
{{ 'http://' ~ app.request.host }}
Pour ajouter un filtre - comme «trans» - dans la même balise, utilisez
{{ ('http://' ~ app.request.host) | trans }}
Comme le souligne Adam Elsodaney , vous pouvez également utiliser l' interpolation de chaînes , cela nécessite des chaînes entre guillemets doubles:
{{ "http://#{app.request.host}" }}
{% set foo = 'http://' ~ app.request.host %}
. Et vous pouvez faire:{{ foo | trans }}
.{{ form_open('admin/files/?path='~file_path|urlencode)|raw }}
pas besoin d'une variable supplémentaire.L' interpolation de chaînes est également une caractéristique peu connue de Twig :
la source
L'opérateur que vous recherchez est Tilde (~), comme l'a dit Alessandro, et le voici dans la documentation:
Et voici un exemple ailleurs dans la documentation :
la source
Dans ce cas, où vous voulez sortir du texte brut et une variable, vous pouvez le faire comme ceci:
Si vous souhaitez concaténer certaines variables, la solution d'alessandro1997 serait bien meilleure.
la source
Comme vous pouvez le voir, cela fonctionne avec des filtres et des fonctions sans avoir à utiliser
set
sur une ligne séparée.la source
Chaque fois que vous devez utiliser un filtre avec une chaîne concaténée (ou une opération mathématique de base), vous devez l'envelopper avec des (). Par exemple.:
{{ ('http://' ~ app.request.host) | url_encode }}
la source
Dans Symfony, vous pouvez l'utiliser pour le protocole et l'hôte:
Bien que @ alessandro1997 ait donné une réponse parfaite sur la concaténation.
la source
Vous pouvez utiliser
~
comme{{ foo ~ 'inline string' ~ bar.fieldName }}
Mais vous pouvez également créer votre propre
concat
fonction pour l'utiliser comme dans votre question{{ concat('http://', app.request.host) }}
::Dans
src/AppBundle/Twig/AppExtension.php
Dans
app/config/services.yml
:la source
Réponse rapide (TL; DR)
format()
filtreRéponse détaillée
Le contexte
Problème
format
filtre qui est plus expressifSolution
format
filtreformat
filtre fonctionne comme lesprintf
fonction dans d'autres langages de programmationformat
filtre peut être moins encombrant que l'opérateur ~ pour les chaînes plus complexesExemple00
example00 string concat bare
Exemple01
exemple01 concaténation de chaîne avec le texte intermédiaire
Exemple02
suit la même syntaxe que
sprintf
dans d'autres languesVoir également
la source
Pour mélanger des chaînes, des variables et des traductions, je fais simplement ce qui suit:
Malgré tout mélangé, cela fonctionne comme un charme.
la source
Le délimiteur "{{...}}" - peut également être utilisé dans les chaînes:
la source