Création des vues en Laravel - Letecode

Les Vues ( Views)

Dernière mise à jour : 17/06/2022

Dans ce chapitre, nous allons voir comment créer des vues en Laravel et transmettre les données depuis les contrôleurs.

Bien sûr, il n'est pas pratique de renvoyer des chaînes de documents HTML entières directement à partir de vos routes et de vos contrôleurs. Heureusement, les vues offrent un moyen pratique de placer tout notre code HTML dans des fichiers séparés. Les vues séparent la logique de votre contrôleur/application d'avec votre logique de présentation et sont stockées dans le répertoire resources/views. Une vue simple pourrait ressembler à ceci :

 

<!-- View placé dans resources/views/greeting.blade.php -->
 
<html>
    <body>
        <h1>Hello, {{ $name }}</h1>
    </body>
</html>

 

Étant donné que cette vue est stockée dans resources/views/greeting.blade.php, nous pouvons la renvoyer en utilisant le helper global view comme ceci :

 

Route::get('/', function () {
    return view('greeting', ['name' => 'James']);
});

Vous cherchez plus d'informations sur la façon d'écrire des modèles Blade ? Nous allons en parlé dans le chapitre suivant.

Création et rendu des vues

Vous pouvez créer une vue en plaçant un fichier avec l'extension  .blade.php dans le répertoire resources/views de votre application. L'extension  .blade.php   informe le framework que le fichier contient un modèle Blade. Les modèles blade contiennent du HTML ainsi que des directives Blade qui vous permettent de faire facilement écho des valeurs, de créer des instructions "if", d'itérer sur les données, etc.

Une fois que vous avez créé une vue, vous pouvez la renvoyer à partir de l'une des routes ou des contrôleurs de votre application à l'aide de l'assistant global view:

Route::get('/', function () {

    return view('greeting', ['name' => 'James']);

});

Les vues peuvent également être renvoyées à l'aide de la façade View:

use Illuminate\Support\Facades\View;
return View::make('greeting', ['name' => 'James']);

Comme vous pouvez le voir, le premier argument passé au helper view correspond au nom du fichier de vue dans le répertoire resources/views. Le deuxième argument est un tableau de données qui doivent être mises à la disposition de la vue. Dans ce cas, nous transmettons la variable name, qui est affichée dans la vue en utilisant la syntaxe Blade .

Répertoires de vue imbriqués

Les vues peuvent également être imbriquées dans des sous-répertoires du répertoire resources/views. La notation "dot" peut être utilisée pour référencer des vues imbriquées. Par exemple, si votre vue est stockée dans resources/views/admin/profile.blade.php, vous pouvez la renvoyer depuis l'une des routes/contrôleurs de votre application comme suit :

return view('admin.profile', $data);

Les noms de répertoire d'affichage ne doivent pas contenir le caractère (.) .

Création de la première vue disponible

En utilisant la méthode first de la façade View, vous pouvez créer la première vue qui existe dans un tableau de vues donné. Cela peut être utile si votre application ou votre package permet de personnaliser ou d'écraser les vues :

 

use Illuminate\Support\Facades\View;
return View::first(['custom.admin', 'admin'], $data);

Déterminer si une vue existe

Si vous avez besoin de déterminer si une vue existe, vous pouvez utiliser la façade View. La méthode exists retournera true si la vue existe :

use Illuminate\Support\Facades\View;
if (View::exists('emails.customer')) {
    //
}

 

Transmission de données aux vues

Comme vous l'avez vu dans les exemples précédents, vous pouvez passer un tableau de données aux vues pour rendre ces données disponibles à la vue :

return view('greetings', ['name' => 'Victoria']);

Lors de la transmission d'informations de cette manière, les données doivent être un tableau avec des paires clé/valeur. Après avoir fourni des données à une vue, vous pouvez ensuite accéder à chaque valeur de votre vue à l'aide des clés de données, telles que <?php echo $name; ?>.

Au lieu de transmettre un tableau complet de données à la fonction view , vous pouvez utiliser la méthode with pour ajouter des éléments de données individuels à la vue. La méthode with renvoie une instance de l'objet view afin que vous puissiez continuer à enchaîner les méthodes avant de renvoyer la vue :

 

return view('greeting')
            ->with('name', 'Victoria')
            ->with('occupation', 'Astronaut');

 

Optimisation des vues

Par défaut, les vues du modèle Blade sont compilées à la demande. Lorsqu'une requête est exécutée qui rend une vue, Laravel déterminera si une version compilée de la vue existe. Si le fichier existe, Laravel déterminera alors si la vue non compilée a été modifiée plus récemment que la vue compilée. Si la vue compilée n'existe pas ou si la vue non compilée a été modifiée, Laravel recompilera la vue.

La compilation des vues pendant la requête peut avoir un léger impact négatif sur les performances, c'est pourquoi Laravel fournit la view:cachecommande Artisan pour précompiler toutes les vues utilisées par votre application. Pour des performances accrues, vous pouvez exécuter cette commande dans le cadre de votre processus de déploiement :

php artisan view:cache

Vous pouvez utiliser la commande view:clear pour vider le cache de la vue :

php artisan view:clear

Dans notre blog

Pour notre blog, nous avons besoin de :

  • une page d'acceuil pour afficher les récentes publications avec une pagination,
  • une page pour afficher une publication
  • une page pour pour afficher les articles d'une catégorie
  • En suite nous utiliserons des solutions rapide pour la gestion de nos contenus.

Dans le chapitre suivant, nous allons voir comment utiliser le template Blade pour afficher des données sur nos vues.