Icon

Partager Envoyer

(Document)

Vues d'agencement (layouts)

Pour les développeurs, la bibliothèque /application/libraries/Layout_container.php permet d'utiliser des vues d'agencement dans l'application.

Une vue d'agencement est une vue spéciale, dont le fichier se trouve dans /application/views/layouts/ qui est elle-même un conteneur de vue (ou vue modèle). Elle permet comme son nom l'indique de charger et d'agencer une ou plusieurs vues enfants.

Vous pouvez définir et réutiliser autant de vues modèles que vous le souhaitez, par exemple pour créer des agencements différents selon les sections de votre site, par exemple avec l'ajout d'un menu latéral, ou l'inclusion de code Javascript spécifique...
 

Exemple d'utilisation

Dans le contrôleur :

                        // load ecommerce dashboard
                        // note that we use a layout here instead of loading view directly (layouts/dashboard_ecommerce.php)
                        // also, $this->view_data must be set prior to using this!
                        $this->layout_container=new Layout_container;
                        $this->layout_container->load('dashboard_ecommerce', 'ecommerce/dashboard');


Ce code charge d'abord la vue d'agencement (modèle) dashboard_ecommerce (se trouvant dans /application/views/layouts/dashboard_ecommerce.php),
puis il charge la vue finale ecommerce/dashboard (se trouvant dans /application/views/ecommerce/dashboard.php) à l'intérieur de celle-ci.

La variable tableau $this->view_data du contrôleur doit contenir les variables de substitution utilisées dans la vue d'agencement (le fonctionnement est identique à celui pour les vues ordinaires).
Notez que les variables définies dans $this->view_data sont d'ailleurs disponibles dans les deux vues (la vue modèle et la vue qu'elle charge).

Dans la vue modèle, le code suivant suffit à inclure la seconde vue :

<?=$contents;?>
 

Paramètres de chargement d'une vue d'agencement

La syntaxe de la méthode de chargement d'une vue d'agencement (layout_container->load()) ressemble à celle de la méthode équivalente pour les vues (load->view()).

Le premier paramètre $template (qui n'existe pas dans le cas des vues ordinaires) est le nom de la vue d'agencement (ou modèle)  qui doit être chargé :

layout_container->load($template = '', $view = '' , $view_data = array(), $return = FALSE)

Les fichiers des vues d'agencement ou modèles ($template) doivent être placés dans le dossier /application/views/layouts/. Comme pour les vues, il est possible d'y créer des sous-dossiers afin de ranger les modèles.

Le deuxième paramètre $view contient quant à lui le nom de la vue qui sera affectée à la variable $this->view_data['contents'] pour pouvoir être affichée dans le modèle à l'aide du code <?=$contents;?>.

Le troisième paramètre optionnel $view_data peut contenir des variables de substitution supplémentaires à charger dans les vues agencées. Pour inclure d'autres vues dans la vue d'agencement, il est par exemple possible de charger ces dernières dans le contrôleur et d'en ajouter le résultat à $view_data :

                         $view_data['ma_premiere_vue']=$this->load->view('une_vue',$this->view_data,true);
                         $this->layout_container->load('dashboard_ecommerce', 'ecommerce/dashboard',$view_data);


Pour afficher la vue ma_premiere_vue dans la vue d'agencement, il suffira d'afficher la variable $ma_premiere_vue, soit dans la vue d'agencement, soit dans la vue qui lui est transmise en deuxième paramètre :

                         <?=$ma_premiere_vue;?>

Enfin, comme dans le cas des vues, le quatrième paramètre optionnel $return permet d'affecter la sortie à une variable plutôt que de générer l'affichage.

De nombreuses possibilités sont offertes par la bibliothèque d'agencement, mais nous vous conseillons de limiter le nombre d'inclusions pour des raisons de performance.
 


Ce document a été publié le 2019-01-31 09:05:32. (Dernière mise à jour : 2019-07-11 03:42:27.)




This website uses 'cookies' to enhance user experience and provide authentification. You may change which cookies are set at any time by clicking on more info. Accept
x