Blade FR MMI
Published: 2024-05-22 08:53:34

Salut et bienvenue dans ce cours sur Blade. Même si on ne va pas suivre exactement la [documentation officielle de Blade](https://laravel.com/docs/11.x/blade#main-content), elle reste une bonne référence. Dans ton projet Instagram, tu vas retrouver différentes choses :

1. `config/blade.php` : Ce fichier s'occupe de la configuration de Blade, le moteur de templates de Laravel. Il initialise le moteur de templates, définit les chemins vers les fichiers de vue et le cache, et enregistre l'extension de fichier pour les templates Blade.

2. `resources/views/index.blade.php` : C'est la page d'accueil de ton application. Elle étend le layout `app` et définit une section `content`. Dans cette section, elle affiche un titre (qui est une variable passée à la vue), un message de bienvenue et un lien vers la page 2.

3. `resources/views/page2.blade.php` : C'est une autre page de ton application. Elle étend également le layout `app` et définit une section `content`. Dans cette section, elle affiche un message indiquant que c'est la page 2.

4. `resources/views/layouts/app.blade.php` : C'est le layout principal de ton application. Il contient la structure HTML de base de tes pages, y compris les balises `<head>` et `<body>`, et définit un emplacement (`@yield('content')`) où les vues individuelles peuvent insérer leur contenu.

Le fonctionnement global est le suivant : lorsque tu affiches une vue (par exemple, `index` ou `page2`), Blade cherche d'abord le fichier correspondant dans le répertoire des vues. Ensuite, il évalue ce fichier comme un template Blade, ce qui signifie qu'il remplace les directives Blade (comme `@extends`, `@section`, et `{{ $variable }}`) par leur équivalent PHP. Si la vue étend un layout, Blade remplace l'instruction `@yield` dans le layout par le contenu de la section correspondante de la vue. Enfin, le résultat est envoyé au navigateur.

Note que toutes les vues partagent le même layout (`app`), ce qui signifie qu'elles ont toutes la même structure de base. Cela permet d'éviter la duplication de code et de rendre l'application plus facile à maintenir.









Dans ton fichier `index.php` (à la racine), tu vérifies d'abord si une action a été définie dans l'URL. Si aucune action n'est définie, tu définis l'action par défaut sur "index". Ensuite, tu vérifies si l'action demandée existe dans le tableau `$listeDesActions` que tu as défini dans `config/actions.php`. Si l'action n'existe pas, tu affiches une page d'erreur 404. Si l'action existe, tu inclus le fichier PHP correspondant à cette action.

Dans le cas de l'action "index", le fichier PHP correspondant est `actions/index.php`. Dans ce fichier, tu définis une variable `$monTitre` et tu utilises le moteur de templates Blade pour afficher la vue "index" avec cette variable.

Voici comment tu pourrais réécrire le code de `actions/index.php` pour le rendre plus clair :

```php
<?php

// Définir le titre de la page
$titreDeLaPage = "Mon super titre";

// Utiliser le moteur de templates Blade pour afficher la vue "index"
// Passer la variable titreDeLaPage à la vue
echo $blade->make("index", ["titre" => $titreDeLaPage])->render();

?>
```

Dans ce code, j'ai simplement renommé la variable `$monTitre` en `$titreDeLaPage` pour rendre son but plus clair. J'ai également ajouté des commentaires pour expliquer ce que fait chaque ligne de code.