A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

4.13. Les Aides de Vues (View Helpers)

Une aide de vue est typiquement une (relativement) simple classe PHP dont le but est de générer le rendu d'une partie de la vue. Vous pouvez appeler des aides de vue à partir de n'importe quelle vue. Avec les aides de vue, vous pouvez créer des widgets réutilisables (comme des menus, des barres de navigation, etc.) pour vos pages web.

Les aides de vue sont analogues aux plugins de contrôleurs : les plugins de contrôleurs permettent d'"étendre" la fonctionnalité des contrôleurs, et les aides de vue permettent "d'étendre" la fonctionnalité des vues.

ZF3 fournit de nombreuses aides de vue standard prêtes à l'emploi. Dans le tableau 4.7, certains d'entre elles sont présentées avec une brève description :

Table 4.7. Aides de vue standard
Standard Plugin Class Description
BasePath Permet de récupérer le chemin de base de l'application Web, qui est le chemin absolu vers APP_DIR.
Url Permet de générer des adresses URL absolues ou relatives depuis une vue.
ServerUrl Récupère l'URL de la requête en cours.
Doctype Une aide pour définir et récupérer le doctype HTML de la page.
HeadTitle Une aide pour définir le titre HTML de la page Web.
HtmlList Une aide pour générer des listes HTML ordonnées et non ordonnées.
ViewModel Une aide pour stocker et récupérer la vue
Layout Récupère le template à appliquer à la vue.
Partial Permet d'afficher une vue "partielle".
InlineScript Une aide pour définir et récupérer les éléments de script à inclure dans la section de corps HTML.
Identity Une aide de vue pour récupérer l'identité de l'utilisateur authentifié.
FlashMessenger Permet de récupérer les messages "flash" stockés en session.
EscapeHtml Permet d'échapper une variable à afficher dans la page web.

Pour vous donner un exemple d'utilisation d'une aide de vue, nous allons voir ci-dessous comment définir un titre pour une page web. Généralement, il est nécessaire de donner un titre différent pour chaque page. Vous pouvez le faire avec l'aide de vue HeadTitle. Par exemple, vous pouvez définir le titre de la page A Propos en ajoutant le code PHP suivant au début du de la vue about.phtml :

<?php
$this->headTitle('A Propos');
?>

Dans le code ci-dessus, nous appelons l'aide de vue HeadTitle et lui transmettons le titre de la page ("A Propos") en tant qu'argument. L'assistant de vue HeadTitle définit en interne le texte de l'élément de votre page Web. Ensuite, si vous ouvrez la page <em>A Propos</em> dans votre navigateur Web, le titre de la page ressemblera à "A propos - ZF Skeleton Application" (voir la figure 4.9 ci-dessous en exemple) :</p> <p><span class="image-wrapper"> <a target="_blank" href="../../en/images/mvc/about_title.png"> <img src="../../en/images/mvc/about_title.png" alt="Figure 4.9. Définition du titre de la page A Propos" /></a> <span class="image-caption">Figure 4.9. Définition du titre de la page A Propos</span> </span> </p> <blockquote class="notquote information" data-type="information"><p> Nous allons discuter des aides de vue plus en détails et fournir plus d'exemples d'utilisation dans le chapitre <a href="../Apparence_et_mise_en_page.html">Apparence et Layout</a> </p> </blockquote> </div> <!-- Ads --> <div id="ads-chapter-bottom"> <div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- Using Zend Framework 3 Chapter - Bottom - Adaptive --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-3933778336056438" data-ad-slot="1546211126" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <!-- Navigation --> <div class="navigation"> <div class="current-chapter"> <a href="../Modèle_Vue_Controleur.html"> <img alt="Contents" src="../../assets/images/upload.png"><span class="nav-btn-text">Modèle-Vue-Controleur</span> </a> </div> <div class="prev-chapter"> <a href="../Modèle_Vue_Controleur/Les_Vues.html"> <img alt="Previous Chapter" src="../../assets/images/left.png"><span class="nav-btn-text">Previous</span> </a> </div> <div class="contents"> <a href="../toc.html"> <img alt="Contents" src="../../assets/images/book.png"><span class="nav-btn-text">Contents</span> </a> </div> <div class="next-chapter"> <a href="../Modèle_Vue_Controleur/Nommage_des_vues.html"> <span class="nav-btn-text">Next</span><img alt="Next Chapter" src="../../assets/images/right.png"> </a> </div> </div> <div id="disqus_thread"></div> </div> <footer> <div class="footer"> <div class="footer-body"> <div class="copyright"> Copyright © 2019 by Oleg Krivtsov </div> <div class="footer-menu"> <div class="footer-link"> <a href="https://olegkrivtsov.github.io/using-zend-framework-3-book/legal/terms-and-conditions.html">Terms & Conditions</a> </div> <div class="footer-link"> <a href="https://olegkrivtsov.github.io/using-zend-framework-3-book/legal/copyright-policy.html">Copyright Policy</a> </div> <div class="footer-link"> <a href="https://olegkrivtsov.github.io/using-zend-framework-3-book/legal/privacy-policy.html">Privacy Policy</a> </div> </div> <div class="generated-by"> Generated using <a href="https://github.com/olegkrivtsov/openbook">OpenBook</a> </div> </div> </div> </footer> <a href="#0" class="cd-top">Top</a> <script src="../../assets/js/jquery.min.js"></script> <script src="../../assets/js/loadCSS.js"></script> <script src="../../assets/js/popup.js"></script> <script src="../../assets/js/prism.js"></script> <script> var disqus_config = function () { this.page.url = window.location.href; // Replace PAGE_URL with your page's canonical URL variable this.page.identifier = ''; // Replace PAGE_IDENTIFIER with your page's unique identifier variable }; (function() { // DON'T EDIT BELOW THIS LINE var d = document, s = d.createElement('script'); s.src = '//using-zend-framework-3-book.disqus.com/embed.js'; s.setAttribute('data-timestamp', +new Date()); (d.head || d.body).appendChild(s); })(); </script> <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript> <script> loadCSS("../../assets/css/prism.css"); </script> <script> jQuery(document).ready(function($){ // browser window scroll (in pixels) after which the "back to top" link is shown var offset = 300, //browser window scroll (in pixels) after which the "back to top" link opacity is reduced offset_opacity = 1200, //duration of the top scrolling animation (in ms) scroll_top_duration = 700, //grab the "back to top" link $back_to_top = $('.cd-top'); //hide or show the "back to top" link $(window).scroll(function(){ ( $(this).scrollTop() > offset ) ? $back_to_top.addClass('cd-is-visible') : $back_to_top.removeClass('cd-is-visible cd-fade-out'); if( $(this).scrollTop() > offset_opacity ) { $back_to_top.addClass('cd-fade-out'); } }); //smooth scroll to top $back_to_top.on('click', function(event){ event.preventDefault(); $('body,html').animate({ scrollTop: 0 , }, scroll_top_duration ); }); }); </script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-80824388-1', 'auto'); ga('send', 'pageview'); </script> </body> </html>