framework-web:symfony:templates

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
framework-web:symfony:templates [2018/01/30 00:54] – [Héritage] jcheronframework-web:symfony:templates [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 106: Ligne 106:
 C'est ainsi que Twig permet de structurer un ensemble de pages, en uniformisant la présentation et en évitant les répétitions de code. C'est ainsi que Twig permet de structurer un ensemble de pages, en uniformisant la présentation et en évitant les répétitions de code.
  
-==== Héritage ====+==== Héritage et blocs ====
  
 Soit le template principal suivant : Soit le template principal suivant :
Ligne 133: Ligne 133:
 </html> </html>
 </sxh> </sxh>
-==== Blocks ====+ 
 + 
 +Il est possible de définir un template enfant de la façon suivante : 
 + 
 +<sxh html;title:templates/blog/index.html.twig> 
 +{% extends 'base.html.twig' %} 
 + 
 +{% block title %}My cool blog posts{% endblock %} 
 + 
 +{% block body %} 
 +    {% for entry in blog_entries %} 
 +        <h2>{{ entry.title }}</h2> 
 +        <p>{{ entry.body }}</p> 
 +    {% endfor %} 
 +{% endblock %} 
 +</sxh> 
 ==== Parent ==== ==== Parent ====
 +
 +Il est possible de réutiliser le contenu affiché un bloc du template parent en utilisant la fonction **parent()** :
 +
 +<sxh html>
 +{% block sidebar %}
 +    <h3>Table of Contents</h3>
 +
 +    {# ... #}
 +
 +    {{ parent() }}
 +{% endblock %}
 +</sxh> 
 ==== Inclusion ==== ==== Inclusion ====
  
 +Soit le template suivant affichant le détail d'un article :
  
 +<sxh html;title:templates/article/article_details.html.twig>
 +<h2>{{ article.title }}</h2>
 +<h3 class="byline">by {{ article.authorName }}</h3>
  
 +<p>
 +    {{ article.body }}
 +</p>
 +</sxh>
  
 +Il est possible de réutiliser ce template pour afficher la liste des articles, par inclusion :
  
 +<sxh html;title:templates/article/list.html.twig>
 +{% extends 'layout.html.twig' %}
 +
 +{% block body %}
 +    <h1>Recent Articles<h1>
 +
 +    {% for article in articles %}
 +        {{ include('article/article_details.html.twig', { 'article': article }) }}
 +    {% endfor %}
 +{% endblock %}
 +</sxh>
 +
 +
 +===== Liens =====
 +
 +Soit la route suivante définie dans le contrôleur Welcome :
 +
 +<sxh php;title:src/Controller/WelcomeController.php>
 +use Symfony\Component\Routing\Annotation\Route;
 +
 +class WelcomeController extends Controller
 +{
 +    /**
 +     * @Route("/", name="welcome")
 +     */
 +    public function index()
 +    {
 +        // ...
 +    }
 +}
 +</sxh>
 +
 +Il est possible de générer l'url correspondant à cette route en passant à la fonction **path** la propriété **name** de la route : welcome
 +<sxh html;gutter:false>
 +<a href="{{ path('welcome') }}">Home</a>
 +</sxh>
 +
 +
 +Génération de route avec paramètres :
 +
 +<sxh php;title:src/Controller/ArticleController.php>
 +use Symfony\Component\Routing\Annotation\Route;
 +
 +class ArticleController extends Controller
 +{
 +    /**
 +     * @Route("/article/{slug}", name="article_show")
 +     */
 +    public function show($slug)
 +    {
 +        // ...
 +    }
 +}
 +</sxh>
 +
 +<sxh html;title:templates/article/recent_list.html.twig>
 +{% for article in articles %}
 +    <a href="{{ path('article_show', {'slug': article.slug}) }}">
 +        {{ article.title }}
 +    </a>
 +{% endfor %}
 +</sxh>
 +
 +Génération d'url absolue, à partir de la function **url()** :
 +
 +<sxh html>
 +<a href="{{ url('welcome') }}">Home</a>
 +</sxh>
  
  • framework-web/symfony/templates.1517270076.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)