Utilisation des views

Les views sont en fait des templates PHP. Il s'agit donc d'un mélange de HTML et de PHP, le PHP étant délimité par des tags <? ?> ou <?= ?> (le = remplaçant en fait la fonction echo). Vous pouvez également utiliser les tags ASP/Ruby <% %> et <%= %>. Attention : n'oubliez pas de mettre un espace entre les tags et le code PHP.

<h3>User names</h3>
<ul>
<? foreach($this->users as $user): ?>
    <li>Name : <?= $user->name; ?></li>
<? endforeach; ?>
</ul>

Remarque : PHP autorise, avec l'option de configuration short_tags activée, l'utilisation de tags plus courts, c.a.d <? ?>, remplaçant <?php ?> et <?= ?> , équivalent à <?php echo …?>. Les shorts tags ne sont pas appéciés des puristes, qui soutiennent que lorsque les navigateurs populaires supporteront vraiment xhtml (c.a.d accepteront le mime-type text/xhtml), ils pourraient entrer en conflit avec la déclaration XML <?xml version=“1.0” encoding=“UTF-8”?>. Bien qu'ils n'aient pas tout à fait tort sur le fond, certains ont prouvé que le problème pouvait être réglé en étant pris en compte par le parser PHP. La solution utilisée par Stato est de “précompiler” automatiquement les templates pour remplacer les shorts tags par les tags normaux. Vous n'avez donc pas besoin de l'option short_tags et le PHP utilisé lors du rendu du template contient des tags normaux.

Helpers

Les helpers sont de simple fonctions PHP générant du HTML.

Templates partiels

L'utilisation des partiels vous permet d'éviter les redondances dans vos pages, en rendant possible l'extraction de structures communes dans des templates partagés. 2 méthodes sont à votre disposition pour appeller le rendu de ces partiels dans vos pages. Par convention, les noms fichiers de partiels doivent être préfixés d'un underscore.

Imaginons que l'action en cours est UsersController::account(). Dans le template correspondant (/views/users/account.php), nous avons :

<?= $this->render_partial('user'); ?>

Ce helper fera donc le rendu d'un partiel /views/users/_user.php. Nous pouvons également fournir des variables locales :

<?= $this->render_partial('user', array('author' => $this->user)); ?>

Une variable $author sera ainsi disponible dans le partiel.

Plusieurs controllers peuvent également partager un même partiel. Si le partiel est par exemple dans /views/share/_user.php, il suffit d'écrire :

<?= $this->render_partial('share/user'); ?>

Collections

On a souvent besoin dans un template d'itérer un tableau et, pour chaque élément, de faire le rendu d'un partiel. La méthode render_partial_collection permet de le faire en une ligne :

<?= $this->render_partial_collection('share/user', $this->users); ?>

Le helper fera le rendu du partiel /views/share/_user.php pour tous les éléments du tableau $this→users, en passant une variable locale $user au sub-template. C'est donc l'équivalent de :

<? foreach($this->users as $user) : ?>
    <?= render_partial('share/user', array('user' => $user)); ?>
<? endforeach; ?>

Notez également que le helper met en place un compteur d'itération, mis à la disposition du template sous la forme d'une variable $<partial_name>_counter (par exemple ici : $user_counter).

 
fr/views.txt · Last modified: 2009/04/03 02:27 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki