IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Tutoriel pour apprendre à utiliser le framework Laravel 4


précédentsommairesuivant

VI. Chapitre 6 : Les vues

Nous avons bien avancé dans notre découverte de Laravel 4. Nous savons gérer les URL et les entrées. Mais pour les réponses nous nous sommes pour le moment contentés de choses sommaires. Nous allons voir à présent comment créer des réponses élaborées avec les vues.

VI-A. Une vue simple

Il faut comprendre une vue dans le sens du modèle MVC. Pour respecter ce modèle une vue ne doit comporter que ce qui est nécessaire et suffisant pour afficher la réponse chez le client. Dans la structure de Laravel les vues doivent se placer dans le dossier app/views :

Image non disponible

À la base une vue est juste du code HTML. Créez un fichier PHP avec ce code et enregistrez-le avec le nom bonjour.php dans le dossier app/views :

 
Sélectionnez
<h1>Bonjour !</h1>

Créez ensuite cette route :

 
Sélectionnez
1.
2.
3.
4.
Route::get('bonjour', function()
{
    return View::make('bonjour');
});

Entrez cet URL : http://localhost/laravel/public/bonjour

Vous devez obtenir cet affichage :

Image non disponible

VI-A-1. Des paramètres

Les vues seraient vraiment peu utiles si on ne pouvait pas leur transmettre de paramètre. Modifions notre vue pour lui ajouter une variable :

 
Sélectionnez
<h1>Bonjour <?php echo $nom ?>!</h1>

Il y a deux façons pour transmettre une variable, voyons la première avec cette route :

 
Sélectionnez
1.
2.
3.
4.
Route::get('bonjour/{nom}', function($nom)
{
    return View::make('bonjour', array('nom' => $nom));
});

Résultat avec l'URL http://localhost/laravel/public/bonjour/Alfred :

Image non disponible

Voici une seconde syntaxe pour un résultat identique :

 
Sélectionnez
1.
2.
3.
4.
Route::get('bonjour/{nom}', function($nom)
{
    return View::make('bonjour')->with('nom', $nom);
});

VI-A-2. Une sous-vue

On peut imbriquer une vue dans une autre. Voici par exemple une vue que nous allons appeler sous_vue.php :

 
Sélectionnez
<h3>Bonjour <?php echo $nom ?>!</h3>

Créons une deuxième vue que nous appelons bonjour.php :

 
Sélectionnez
<h1>Bienvenue !</h1>
<?php echo $enfant; ?>

Et enfin une route :

 
Sélectionnez
1.
2.
3.
4.
Route::get('bonjour/{nom}', function($nom)
{
    return View::make('bonjour')->nest('enfant', 'sous_vue', array('nom' => $nom));
});

Entrons l'URL http://localhost/laravel/public/bonjour/Albert.

Nous obtenons :

Image non disponible

VI-A-3. Le composeur de vue

Imaginez maintenant que vous voulez lier des données à une vue chaque fois que vous la chargez. Évidemment vous pouvez écrire le code correspondant directement à chaque appel, mais il existe une autre possibilité basée sur la gestion d'un événement. Voici un exemple pour en comprendre le fonctionnement. Commencez par créer une première vue que vous appelez header.php :

 
Sélectionnez
<h1>Bienvenue !</h1>

Créez une deuxième vue que vous appelez bonjour.php :

 
Sélectionnez
<?php echo $head; ?>
<h3>Bonjour <?php echo $nom ?>!</h3>

Dans le fichier des routes créez ce code :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
View::composer('bonjour', function($view)
{
    $view->nest('head', 'header');
});
 
Route::get('bonjour/{nom}', function($nom)
{
    return View::make('bonjour')->with('nom', $nom);
});

Maintenant si vous utilisez l'URL http://localhost/laravel/public/bonjour/Jean vous obtenez :

Image non disponible

Vous pouvez, avec cette méthode aussi, attacher des données systématiquement à une vue chaque fois que vous la chargez. Prenons un exemple avec la vue bonjour.php :

 
Sélectionnez
<h3><?php echo $greeting.' '.$nom ?>!</h3>

Avec ce code dans les routes :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
View::composer('bonjour', function($view)
{
    $view->with('greeting', 'Bonjour');
});
 
Route::get('bonjour/{nom}', function($nom)
{
    return View::make('bonjour')->with('nom', $nom);
});

Maintenant si vous utilisez l'URL http://localhost/laravel/public/bonjour/Jean, vous obtenez :

Image non disponible

précédentsommairesuivant

Copyright © 2017 Laravel. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.