====== 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.
User names
foreach($this->users as $user): ?>
- Name : = $user->name; ?>
endforeach; ?>
**Remarque** : PHP autorise, avec l'option de configuration ''short_tags'' activée, l'utilisation de tags plus courts, c.a.d '' ?>'', remplaçant '''' et ''= ?>'' , équivalent à ''''. 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 ''''. Bien qu'ils n'aient pas tout à fait tort sur le fond, [[http://fosterburgess.com/kimsal/?p=26|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 ''$_counter'' (par exemple ici : ''$user_counter'').