Versions
xx/04/2012: Création
13/09/2013: render en sf2.3
Contactez-nous
Kitpages
17 rue de la Frise
38000 Grenoble
tel : 04 58 00 33 81
Aide mémoire twig / symfony2
Introduction
Cette page contient les lignes twig (dans un contexte symfony2) qu'on passe notre vie à aller chercher dans la doc.
Fonctions ajoutées par symfony2
<!-- générer une URL --> {{ path ("ma_route", {"elementId": 12} ) }} <!-- appeler une action d'un bundle depuis un template twig --> <!-- symfony 2.3 --> {{ render(controller('AcmeArticleBundle:Article:recentArticles', { 'max': 3 } ) ) }} <!-- avant symfony 2.3 --> {% render 'KitpagesCmsBundle:Zone:widget' with {'slug': 'actuHome'} %} <!-- inclure un template dans un autre --> {% include 'AppSiteBundle:Page:template/_bigContent.html.twig' %} <!-- inclure un template dans un autre en modifiant des variables, only indique que les autres variables ne sont pas transmises --> {% include 'AppSiteBundle:Page:template/_bigContent.html.twig' with {'foo': 'bar'} only %} <!-- accès à des assets globaux --> <img src="{{asset('img/footer/logo-footer.png')}}" alt="back to home"/> <!-- accès à un asset à l'intérieur d'un bundle --> <link href="{{ asset('bundles/kitpagescms/css/common.css') }}" rel="stylesheet" type="text/css" media="all" />
Fonctions de traduction
Cette partie a été déplacée dans la page Traductions en sf2
Objects de l'application accessibles dans twig
Symfony2 envoie à twig une classe "app" permettant d'accéder à pas mal d'informations de l'application.
- app.security
- .token
- .key
- .user
- .roles
- .authenticated
- .attributes
- .alwaysAuthenticate
- app.user (entity User)
- app.request
- .attributes
- .query
- .server
- .files
- .cookies
- .headers
- .content
- .languages
- .charsets
- .acceptableContentTypes
- .pathInfo
- .requestUri
- .baseUrl
- .basePath
- .method
- .format
- app.session
- .locale
- .defaultLocale
- .saved
- app.environment
- app.debug
Tiré d'un billet du blog de Bertrand Zuchuat
<!-- Permet par exemple de récupérer le nom de la route --> {{ app.request.attributes.get('_route') }}
Quelques syntaxes pratiques
<!-- formater une date --> {{ entity.createdAt|date("d-m-Y") }} <!-- assigner une variable --> {% set img = data.media.mainImage.0.default|default('') %}
Quelques constructions twig courantes
<!-- boucle foreach --> {% for line in lineList %} <li>{{line.title}}</li> {% endfor %} <!-- boucle foreach avec clé --> {% for key, line in lineList %} <li>key={{key}}, content={{line.title}}</li> {% endfor %} <!-- définir et utiliser une variable twig --> {% set img = data.root.media_mainImage|default('') %} {{ img }} <!-- condition if --> {% if kenny.sick %} Kenny is sick. {% elseif kenny.dead %} You killed Kenny! {% else %} Kenny looks okay --- so far {% endif %} <!-- tri par key --> {% for key in valueList|keys|sort %} {{ attribute(valueList, key) }} {% endfor %}
Envoyer des valeurs globales ou des paramètres à twig
Régulièrement on a besoin d'envoyer une valeur constante (par exemple un paramètre symfony2) à tous les templates twig (la langue du site ou des blagues du genre...).
Imaginons qu'on ait un paramètre %site_name% dans le parameters.ini de symfony2. Si on veut le rendre disponible dans tous les templates twig, on doit ajouter une configuration dans le config.yml :
twig: globals: site_name_global: "%site_name%"
Ensuite on y accès simplement dans twig comme une variable standard
{{ site_name_global }}
Commentaires
Ajouter un commentaire