Vues
Catégorie :
Manuel
Une vue est une page de template, généralement affichée après l'exécution d'une action.
Par exemple, PostsController::add() appellera la vue située à
app/views/posts/add
Les vues sont considérées comme des fichiers PHP. Vous pouvez donc utiliser PHP à l'intérieur afin de personnaliser vos pages.
Et, même si la plupart de vos vues contiendrons de l'HTML, vous pouvez également y placer du XML, des images, ...
Dans une vue, vous pouvez utiliser les variables disponibles dans le modèle correspondant en utilisant le tableau
$data. Toute donnée passée via la méthode set() est également disponible, via des variable directes.
L'helper HTML est disponible par défaut dans vos vues, et est généralement le plus utilisé. Il permet de générer des formulaires, des liens etc très simplement.
La plupart des fonctions disponibles dans les vues le sont via les helpers. Il existe plusieurs autres helpers, et vous pouvez créer les vôtres, mais ce n'est pas l'objectif de cet article.
Étant donné que les vues ne sont prévues que pour définir le rendu de votre application, peu d'autres fonctions y sont disponibles. Une utile est
renderElement() dont nous discuterons plus loin dans cet article.
Layouts
Un layout contient la présentation commune à plusieurs de vos vues.
Ils sont placés en
app/views/layouts. Le layout par défaut peut être remplacé en créant le fichier
default.thtml.
Dans ce layout, vous devez préciser ou placer le code de la vue elle même.
Pour cela, vous pouvez utiliser la variable
$content_for_layout (et
$title_for_layout)
Par exemple :
"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Pour définir la variable $title_for_layout, vous devez définir la variable
$this->pageTitle dans votre contrôleur.
Vous pouvez créer autant de layouts que vous le souhaitez. Pour changer le layout par défaut d'un contrôleur, modifiez la valeur de la variable
$this->layout, ou la fonction
setLayout().
Élements
Beaucoup d'applications possèdent des petits blocs de code qui doivent être répétés plusieurs fois dans celle-ci. Il serait fastidieux et inutile de faire des copier/coller.
C'est pour cela que les éléments ont été mis en place.
Vous devez placer vos éléments dans le dossier
/app/elements/. Il s'agit de vues qui ne seront pas appellées par des actions, mais qui pourront l'être par d'autres vues grâce à la fonction
renderElement().
Appel d'un élément sans paramètres
renderElement('helpbox'); ?>
Appel d'un élément avec des paramètres
$this->renderElement('helpbox', array("helptext" => "Hey ! besoin d'aide ?."));
?>
Cependant, les variables déjà disponibles dans vos vues le seront également dans les éléments.
Ceux-ci peuvent être utilisés pour rendre vos vues plus lisibles en séparant votre code en plusieurs parties distinces.
Ils peuvent également permettre de réutiliser divers fragments de code au travers de votre site.