Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

code:php:symfony2:twig [16/02/2016 16:50]
elisabeth [Généralités]
code:php:symfony2:twig [15/06/2018 22:22]
Ligne 1: Ligne 1:
-====== Twig ====== 
-===== Généralités ===== 
- 
-Les templates TWIG sont rangées dans src\Machin\TrucBundle\Resources\views\Chose 
-Généralement on donne le nom de l'​action par exemple : add.html.twig 
-Pour les appeler dans le contrôleur : 
-<code php> 
-public function addAction() 
-{ 
-   $data = array( 
-       "​var1"​ => 3, 
-       "​var2"​ => "une chaîne",​ 
-       .... 
-   ); 
-   ​return $this ->​get('​templating'​) 
-     ​->​render('​MachinTrucBundle:​Chose:​add.html.twig',​ $data); 
-   // ou en plus court 
-   ​return $this ->​render('​MachinTrucBundle:​Chose:​add.html.twig',​ $data); 
-    ​ 
-   //on peut aussi récupérer le contenu HTML de la template, ​ 
-   ​$contenu = $this->​renderView('​MachinTrucBundle:​Chose:​add.html.twig',​ $data); 
-} 
-</​code>​ 
- 
-===== blocs et layout ===== 
-==== block ==== 
- 
-On créé un layout général dans lequel on définit des blocs 
-<code twig> 
-{# src/​Machin/​TrucBundle/​Resources/​views/​layout.html.twig #} 
-<​!DOCTYPE HTML> 
-<​html>​ 
-  <​head>​ 
-    <meta charset="​utf-8">​ 
-    <​title>​{% block title %}Mon site{% endblock %}</​title>​ 
-  </​head>​ 
-  <​body>​ 
-    {% block menu %} 
-    {% endblock %} 
-    {% block body %} 
-    {% endblock %} 
-  </​body>​ 
-</​html>​ 
-</​code>​ 
-<note tip>On peut mettre le design général dans un fichier sous app:\\ 
-app/​Resources/​views/​layout.html.twig</​note>​ 
-==== extends ==== 
-Par ex : On peut créer un layout pour le controller Chose et l'​action index dérivant d'un autre layout avec ''​%%extends%%''​. 
-On récupère le contenu des blocs du layout parent avec ''​%%{{parent()}}%%''​. 
-<code twig> 
-# src/​Machin/​TrucBundle/​Resources/​views/​Chose/​index.html.twig #} 
-{% extends "​MachinTrucBundle::​layout.html.twig"​ %} 
-# ou si mon layout parent est sous app {#{% extends "::​layout.html.twig"​ %}#} 
-{% block title %}{{ parent() }} - Accueil{% endblock %} 
-{% block menu %} 
-{% endblock %} 
-{% block body %} 
-   <​h1>​Bonjour! </h1> 
-{% endblock %} 
-</​code>​ 
-==== include vs render ==== 
-On peut inclure une template dans une autre , c'est à préférer à render, qui fait repasser par le controller. 
-Si les variables ont le même nom dans la template inclus pas besoin de les passer avec le ''​%%with%%''​. 
-<code twig> 
-{% block menu %} 
-    {% include "​MachinTrucBundle:​Chose:​menu.html.twig"​ with {vr: var1} %} 
-{% endblock %} 
-</​code>​ 
- 
-===== Syntaxe ===== 
-<code twig> 
-  {{ var1 }}           #​affiche la variable var1 
-  {% set var1 = 8 %}   # exécute var1=8 
-  {# commentaire #}    # pour les commentaires 
-</​code>​ 
-==== Les variables ==== 
-Accès aux variables et filtres d'​affichage 
-<code twig> 
-# une variable simple 
-<div> var1 : {{ var1 }} 
-# element d'un tableau 
-<div> {{ tab[id] }} </​div>​ 
-# attribut d'un objet 
-<div> {{ obj.id }} </​div>​ 
-# methode d'un objet 
-<div> {{ obj.getId() }} 
-# les variables globales 
-{{ app.request }}, {{ app.session }}, {{ app.environment }}, {{ app.debug }}, {{ app.security }}, {{ app.user }}  
- 
-# les filtres quelques exemples 
-<​div>​Identifiant : {{ app.user.username|upper}}</​div>​ 
-<​div>​Identifiant : {{ app.security.getToken().getUser().getUsername()|striptags|title }}</​div>​ 
-<​div>​Date : {{ date|date('​d/​m/​Y'​) }}</​div>​ 
- 
-</​code><​note tip> 
- 
-Pour voir tous les filtres : [[http://​twig.sensiolabs.org/​doc/​filters/​index.html]]</​note>​ 
- 
-==== Boucles et conditions ==== 
-<code twig> 
-# condition 
-{% if membre.age < 12 %} 
- --- 
-{% elseif membre.age < 18 %} 
---- 
-{% else %} 
---- 
-{% endif %} 
- 
-# boucle 
-{% for valeur, option in liste_options %} 
-    <option value="​{{ valeur }}">​{{ option }}</​option>​ 
-{% endfor %} 
-</​code>​ 
-Dans les boucles for, on a accès à des variables de boucle ''​%%{{ loop.index }}%%'',​ ''​%%{{loop.first}}%%''​..etc\\\\ 
-[[code:​php:​symfony2:​doctrine|Suite Doctrine]]