Laravel
Models Migration Relation
Introduction Installation Projet:Structure Strucutre,model,migration Migration,Models,Relation Artisan CLI Migrations:Exemples Models:Exemples Relations:Exemples 1 Relations:Exemples 2
Les Relations
BelongsTo HasOne HasMany BelongsToMany HasManyThrough
Exemples des Relations
Relations:oneToMany,ManyToMany... Relations:Exemples
Exercices
Exercice 1 Exercice 2
Controllers Views Routes
Routes,Controller,Model,view
Les Routes
Définir:Routes Routes avec Paramètres Routes nommées Groupes de routes
Les Controllers
Les Controllers Les Contrôleurs de Ressources
Les Vues
Vues et Blade Templates Blade Layouts et Sections Sous-vues Composants et Slots Contrôles de flux
MVC :CRUD
CRUD: Produit CRUD: Etudiant CRUD: Car CRUD,Recherche: Book
Validation
Exemple :Projets
ORM:Eloquent
Exemple :Transport
Api:Laravel +React
Middleware

Seeders & Factories
Exemples :EFM

Authenfication
TP:Schools Management
Authenfication:React
Layouts
Exercices





Laravel : Layouts et Sections

Laravel : Layouts et Sections

Laravel est un framework PHP qui facilite le développement d'applications web robustes et maintenables. L'un de ses atouts majeurs est le moteur de templates Blade, qui permet de gérer efficacement les layouts et les sections dans vos vues. Cette fonctionnalité vous permet de réutiliser du code et de structurer vos templates de manière modulaire.

1. Introduction aux Layouts et Sections

Les layouts et sections permettent de créer des structures de pages réutilisables. Un layout est un modèle de base pour vos vues, et les sections permettent de définir des blocs de contenu spécifiques à chaque vue qui utilise ce layout.

2. Création d'un Layout de Base

Pour créer un layout, vous devez définir un fichier Blade avec des sections marquées par la directive @yield.

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Mon Application - @yield('title')</title>
    <link rel="stylesheet" href="/css/app.css">
</head>
<body>
    <header>
        <h1>Mon Application</h1>
    </header>

    <div class="container">
        @yield('content')
    </div>

    <footer>
        <p>&copy; 2024 Mon Application</p>
    </footer>
</body>
</html>

2.1 Utilisation du Layout dans une Vue

Pour utiliser ce layout, vous devez étendre le layout dans vos vues avec la directive @extends et définir les sections avec la directive @section.

<!-- resources/views/pages/home.blade.php -->
@extends('layouts.app')

@section('title', 'Accueil')

@section('content')
    <p>Bienvenue sur la page d'accueil de mon application!</p>
@endsection

Exemple :

Créons une route qui retourne cette vue :

php
// routes/web.php
Route::get('/', function () {
    return view('pages.home');
});

En visitant la racine de votre application, vous verrez le contenu de la vue inséré dans le layout.

3. Sections Multiples

Vous pouvez définir plusieurs sections dans un layout et les remplir dans vos vues.

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Mon Application - @yield('title')</title>
    <link rel="stylesheet" href="/css/app.css">
</head>
<body>
    <header>
        <h1>Mon Application</h1>
        @yield('header')
    </header>

    <div class="container">
        @yield('content')
    </div>

    <footer>
        @yield('footer')
        <p>&copy; 2024 Mon Application</p>
    </footer>
</body>
</html>

3.1 Remplir les Sections dans une Vue

<!-- resources/views/pages/about.blade.php -->
@extends('layouts.app')

@section('title', 'À propos')

@section('header')
    <h2>À propos de nous</h2>
@endsection

@section('content')
    <p>Nous sommes une entreprise dédiée à fournir les meilleurs services.</p>
@endsection

@section('footer')
    <p>Contactez-nous: contact@monapplication.com</p>
@endsection

Exemple :

Ajoutons une route pour cette vue :

php
// routes/web.php
Route::get('/about', function () {
    return view('pages.about');
});

En visitant /about, vous verrez les sections spécifiques à cette vue insérées dans le layout.

4. Inclusion de Partiels

Il est souvent utile de créer des vues partielles pour des éléments réutilisables comme les barres de navigation.

<!-- resources/views/includes/navbar.blade.php -->
<nav>
    <ul>
        <li><a href="/">Accueil</a></li>
        <li><a href="/about">À propos</a></li>
    </ul>
</nav>
<!-- resources/views/layouts/app.blade.php -->
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Mon Application - @yield('title')</title>
    <link rel="stylesheet" href="/css/app.css">
</head>
<body>
    @include('includes.navbar')
    <header>
        <h1>Mon Application</h1>
        @yield('header')
    </header>

    <div class="container">
        @yield('content')
    </div>

    <footer>
        @yield('footer')
        <p>&copy; 2024 Mon Application</p>
    </footer>
</body>
</html>

5. Section Imbriquées

Vous pouvez également imbriquer des sections pour des mises en page plus complexes.

<!-- resources/views/layouts/app.blade.php -->
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Mon Application - @yield('title')</title>
    <link rel="stylesheet" href="/css/app.css">
</head>
<body>
    @include('includes.navbar')
    <header>
        <h1>Mon Application</h1>
        @yield('header')
    </header>```html
    <div class="container">
        <div class="row">
            <div class="col-md-8">
                @yield('content')
            </div>
            <div class="col-md-4">
                @yield('sidebar')
            </div>
        </div>
    </div>

    <footer>
        @yield('footer')
        <p>&copy; 2024 Mon Application</p>
    </footer>
</body>
</html>

Dans vos vues, vous pouvez remplir les sections comme d'habitude :

<!-- resources/views/pages/home.blade.php -->
@extends('layouts.app')

@section('title', 'Accueil')

@section('header')
    <h2>Bienvenue sur notre site</h2>
@endsection

@section('content')
    <p>Contenu principal de la page d'accueil.</p>
@endsection

@section('sidebar')
    <div class="sidebar">
        <h3>Sidebar</h3>
        <p>Contenu de la sidebar.</p>
    </div>
@endsection

6. Conclusion

Les layouts et sections sont des outils essentiels pour structurer vos vues de manière modulaire dans Laravel. En utilisant ces fonctionnalités, vous pouvez réutiliser du code, organiser votre application de manière logique et maintenable, et améliorer la productivité du développement. Avec la puissance de Blade, la gestion des layouts et sections devient simple et élégante.