Vous êtes sur la page 1sur 44

FRAMEWORK LARAVEL

Présenté par:

Wajdi BOUAZIZ

Expert en développement web


PARTIE1
Introduction à l’architecture de Laravel

1. Introduction

2. Présentation & installation

3. Architecture MVC

4. Routing

5. Controllers

6. Blade
Introduction

Dans ce cours je vous ferai découvrir et apprendre le Framework PHP Laravel 8 et


vous initierai à sa prise en main de manière progressive.

Les connaissances requises pour pouvoir suivre ce cours sont :


• L'architecture MVC (Model View Controller)
• La POO en PHP (Programmation Orientée Objet)
• Et bien évidemment être déjà à l'aise avec les langages HTML/CSS/JS et PHP
Présentation & installation

- Laravel est un framework PHP qui propose des outils pour construire des
applications et des sites web.

- Il regroupe les meilleures librairies pour chaque fonctionnalité nécessaire à la


création d’un site web.

- Il a été construit en se basant sur Symfony.

- En juin 2011, Laravel a publié sa première version Laravel 1


Présentation & installation

Voici pourquoi Laravel est si populaire pour les développeurs et les entreprises :
Moteur de modèle : Laravel fournit aux développeurs Web un moteur de modèle
« BLADE » qui est léger et facile à utiliser.
Artisan : est une CLI (Command Line Interface) qui aide les développeurs à construire
leurs applications web rapidement. Elle est utile pour générer les bases de données et créer
les fichiers MVC de base.
ORM Eloquent : Assure l’intéraction avec la base de données SQL.
Architecture MVC: Laravel est basé sur l’architecture MVC qui améliore les performances
des applications web.
Sécurité: Laravel aident à protéger le code d’une application contre divers types
d’attaques telles que les injections SQL, les vulnérabilités XSS, la falsification de requêtes
intersites (CSRF), etc…
Présentation & installation

Avant de commencer l’installation, vérifier que votre composer est bien installé : ouvrez
votre terminal et tapez la commande :
composer –version
Commençons donc par créer un nouveau projet Laravel. Tout en restant sur votre
terminal dirigez-vous vers votre dossier à la racine de votre serveur.
D:\laragon\www
Et tapez :
composer create-project -–prefer-dist laravel/laravel laravel1
Cette commande vous installera automatiquement la dernière version stable de Laravel
Présentation & installation

Après avoir tout installé nous pouvons voir que le dossier « laravel1 » a bien
été créé et voici ce que l’on y trouve à l’intérieur :
/app : est le dossier où se trouve le cœur de votre application web
(controllers, middlewares, facades, providers, helpers etc…)

/config : vos fichiers de configurations d’application, authentification,


namespace, mails, base de données etc…

/database : Vous y trouverez notamment vos migrations (qui permettent de


gérer votre base de données avec un système de versioning) ainsi que les
seeds et factories (pour tester votre base de données avec des fake data).
Présentation & installation

/public : par convention comme pour la majorité des frameworks il


s’agit du seul dossier accessible depuis le serveur où les fichiers sont
accessibles depuis votre site (images, feuilles de style et scripts
principalement).

/resources : vos assets de feuilles de style (en sass) et fichiers JS, les
fichiers de langues si vous désirez un site multi-langual et l’ensemble
de vos vues.

/routes : vous trouverez notamment le fichier web.php qui vous


permettra de définir l’ensemble des routes de votre application.
Présentation & installation

/.env = étroitement lié au fichier /config/app.php , il définit


l’environnement de l’application (base de données utilisées, nom de
l’application etc…)

composer.json : il s’agit du fichier permettant à Composer de gérer


les dépendances de l’application.
Présentation & installation

Les autres dossiers et fichiers sont moins importants à connaitre pour


l’instant, je ne vous demanderai pas de vous en servir, mais à titre
d’information :

• /bootstrap : demarrage de l’app.


/storage : dossier de stockage.
/tests : tests unitaires (pour éviter de tester manuellement
l’application à chaque fois).
/vendor : Ensemble des dépendances externes.

• Voilà ! Ceci est l’architecture de Laravel et votre tout premier pas


dans la compréhension de sa logique!
Présentation & installation

comment je teste l’accès à mon projet ?


utiliser la commande suivante :
cd laravel1
php artisan serve
copier/coller le lien, que la console vous renvoie, dans votre
navigateur (http://127.0.0.1:8000)
Vous devez voir cette page =>
Cela indique que votre projet
Laravel est bien installé!
Présentation & installation

Quels sont les fichiers à l’origine de cette page ?


Pour cela dirigeons nous vers le fichier web.php situé dans le dossier « routes ».
Route::get('/', function() { return view('welcome'); });
Nous pouvons voir que la route ‘/’ return une method view() avec comme paramètre
'welcome’.
Qu’est-ce-que tout cela veut dire ?
Cela veut dire que pour la route ‘/’ on retourne une vue appelé welcome. Qui se trouve
plus précisément dans resources/views/welcome.blade.php (Blade étant le moteur de
template utilisé par Laravel, nous verrons cela plus tard).
Architecture MVC

Laravel utilise une architecture dite MVC (Model – View – Controller)


Architecture MVC

• Le model contient les données et leur logique.

• La view contient la présentation graphique à renvoyer à l’utilisateur.

• Le controller traite les actions utilisateur (via des requêtes), demande au modèle
d’effectuer les changements, puis passe les données à la vue.
Architecture MVC

Nous allons maintenant installer npm qui est le gestionnaire de paquets officiel de
Node.js. (Node est une plateforme de logiciel libre et événementielle en Javascript). Il
nous permettra de compiler nos assets et d’envoyer la version compilée dans notre
dossier « public ».

Pour l’installer, ouvrez votre console et lancez :

npm install Puis npm run dev

Pour ajouter le lien de votre style dans la vue :

<link href="{{ asset('css/app.css') }}" rel="stylesheet">


Routing

Qu’est-ce que le routage sous Laravel?


Laravel fournit un système de routes simple.
Déclarer une route permet de lier une URI à un code à exécuter.
Le routage est un moyen de créer une URL de requête pour votre application. La meilleure
chose à propos du routage Laravel est que vous êtes libre de définir vos routes comme vous le
souhaitez.
Le routage est l’un des composants clés du framework Laravel, c’est simplement un mécanisme
qui effectue le mappage de vos requêtes vers une action de contrôleur spécifique.
Toutes les routes Laravel sont définies dans le fichier situé sous forme de fichier
/routes/web.php , qui est automatiquement chargé par le framework,
Routing

Pour créer une route, il faut ainsi appeler la classe Route avec la méthode HTTP
souhaitée (get par exemple). Indiquez à cette méthode l’URI concernée et le retour à
afficher pour le visiteur comme dans l’exemple ci-dessous :

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

return ‘Bienvenue sur le site !’;

});

Copier ce code source dans le fichier routes/web.php

Tester votre route dans le navigateur : http://127.0.0.1:8000/accueil


Routing

Route qui affiche un texte :

Route::get(‘page1', function() { return 'Je suis la page 1 !'; });

Route::get(‘page2', function() { return 'Je suis la page 2 !'; });

Route::get(‘page3', function() { return 'Je suis la page 3 !'; });

Copier ce code source dans le fichier routes/web.php

Tester votre route dans le navigateur : http://127.0.0.1:8000/page1

=>Vous remarquez que le rendu est du texte!


Routing

Route qui rend une vue :


Route::get(‘/home', function () {
return view('welcome');
});
Copier ce code source dans le fichier routes/web.php
Tester votre route dans le navigateur : http://127.0.0.1:8000/home
=>Vous remarquez que le rendu est une vue!
Cette vue est cituée dans le dossier : resource/views/welcome.blade.php
Routing

Différentes méthodes utilisées avec Route :

get : Ceci est principalement utilisé pour récupérer les données du serveur, sans modifier les
données et les renvoyer à l’utilisateur.

post : Cela peut être utilisé uniquement pour envoyer des données, pour un traitement
ultérieur (cela pourrait être la validation des données, comme dans le processus de connexion,
inscription…). Il est considéré comme plus sûr que GET pour l’envoi de données sensibles.

put : fonctionne comme le POST dans le sens où il vous permet d’envoyer des données au
serveur, généralement pour mettre à jour une ressource existante au lieu de la créer.

delete : fonctionne comme le POST dans le sens où il vous permet d’envoyer des données au
serveur, généralement pour supprimer une ressource existante .
Routing

Route nommée :

Laravel fournit un moyen simple de nommage de vos routes par lequel nous n’avons pas
à coder en dur l’URI dans nos vues Blade.

Route::get('/home', 'HomeController@index')->name('home’);

Générer une URL à l’aide d’une route nommée

Lien : <a href="{{ route('home') }}">

Redirection dans un contrôleur : Redirect::route('home');


Routing

Le passage des paramètres dans les routes :

On peut utiliser un paramètre pour une route qui accepte des éléments variables en
utilisant des accolades. Exemple :

Route::get(‘page/{n}', function($n) {

return 'Je suis la page ' . $n . ' !';

});

Il existe deux type de parametres qu’on peut passer dans la route :

Parametres obligatoires et parametres facultatifs


Routing

Le passage de paramètre obligatoire :


Par exemple, si vous souhaitez capturer l’ID utilisateur dans l’URL lorsque vous souhaitez obtenir
les détails de l’utilisateur, vous pouvez vous référer aux pratiques suivantes :
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//traitement
});
Routing

Le passage de paramètre facultatif :


Parfois, vous devez spécifier des paramètres de routage, mais les paramètres ne
sont pas obligatoires, ? peut être utilisé à ce moment.
Route::get('user/{name?}', function ($name = null) {
return $name;
});
Route::get('user/{name?}', function ($name = ‘Mohamed') {
return $name;
});
Routing

Routage avec des méthodes de contrôleur :


Vous pouvez créer une route avec une méthode de contrôleur d’appel, vous pouvez
donc simplement créer une méthode de contrôleur et appeler cette méthode avec
votre route comme ci-dessous :
Route::get('/home', 'HomeController@home’);

Pour lister les routes de votre application executer dans la console :

php artisan route:list


Controllers

• Nous allons voir comment relier une route à un Controller plutôt que d'utiliser une
fonction anonyme en deuxième paramètre de nos méthodes de routing.
• Pour commencer créons un nouveau controller
php artisan make:controller HomeController

• vos controllers se situent dans le dossier app/Http/Controllers


Nous allons ensuite créer une nouvelle méthode à notre class WelcomeController
que l'on nommera index()

public function index() { return view('welcome'); }


Controllers

• Maintenant nous devons faire le lien entre notre fichier web.php et notre Controller.
• Pour commencer créons la route dans web.php
Route::get('/', 'HomeController@index')->name('home’);
• Si vous retournez et que vous tapez dans votre terminal la commande :
php artisan route:list
La nouvelle route sera ajouté
Et on peut la tester : http://127.0.0.1:8000/
Nous rencontrons un problème : laravel ne trouve pas le controller!
Correction => ajouter en haut dans web.php : use App\Http\Controllers;
Controllers

• Maintenant que nous savons récupérer des données dans notre controller, voyons
comment passer des données depuis ce controller vers notre view.

• Return view()->with([‘nomvar’,$variable])

• Return view(‘nomdelavue’,compact(‘nomvar’));

Une fois transmises vous devez les afficher dans votre vue.

Vous ouvrez donc les accolades utilisées par le langage Blade et vous demandez
d’afficher la variable :

<p>{{ $nomvar }}</p>


Controllers

• Exercice1 : Développer le controller avec la méthode nécessaire pour récupérer les deux
paramètres date et num de la route suivante et les afficher dans une vue.
Route::get('/{date}/{num}', 'OrderController@show')->name('show.order’);

Exercice2 : Développer un site web statique de 4 pages (Accueil, presentation, produits et contact).

- Page d’accueil avec la route : / => qui affiche la chaine : c’est la page d’accueil

- Page présentation : /about => qui affiche la chaine : c’est la page présentation

- Page produit : /produits => qui affiche la chaine : c’est la page présentation

- Page contact : /contact : qui affiche un formulaire de contact

- traitement contact : /contact/save : qui recupere du formulaire de contact et affiche les infos
Blade

- Blade est le moteur de template utilisé par Laravel.

- permettre d’utiliser du php sur notre vue mais d'une manière assez particulière.

- Pour créer un fichier qui utilise le moteur de template Blade il vous faut ajouter
l'extension ".blade.php".

- Comme nous l'avons vu dans la présentation de l'architecture de Laravel, les fichiers de


vos vues se situent dans le dossier resources/views.
Blade

Comment ecrire un commentaire?


{{-- ceci est un commentaire --}}
Comment déclarer une variable?
@php
$nom_var = “bonjour"
@endphp
Comment écrire des boucle FOREACH?
@foreach ($users as $user)
<p>This is user {{ $user->id }}</p>
@endforeach
Blade

Comment lire des variables dans une vue blade?


<p>{{ $nomvar }}</p>
Comment écrire des boucles FOR?
@for ($i = 0; $i < 10; $i++)
La valeur actuelle est {{ $i }}
@endfor
Comment écrire des boucle FOREACH?
@foreach ($users as $user)
<p>This is user {{ $user->id }}</p>
@endforeach
Blade

Comment écrire des boucle FORELSE?

@forelse ($users as $user)

<p>This is user {{ $user->id }}</p>

@empty

<p>aucunutilisateur</p>

@endforelse
Blade

Comment écrire If elseif else?

@if (count($enregistrements) === 1)

J'ai un enregistrement!

@elseif (count($enregistrements) > 1)

J'ai plusieurs enregistrements!

@else

Je n'ai aucun disque enregistrement!

@endif
Blade

Comment vérifier empty et isset?

@isset($enregistrements)

// $enregistrements est défini...

@endisset

@empty($enregistrements)

// $enregistrements est vide...

@endempty
Blade
Comment écrire Switch .. Case ?

@switch($login_error)
@case(1)
<span> Vérifier votre login!</span>
@break
@case(2)
<span>Vérifier votre mot de
passe!</span>
@break
@default
<span>Une erreur s'est produite.
Veuillez réessayer</span>
@endswitch
Blade

Heritage de BLADE :

- Dans un projet LARAVEL nous pouvons créer un Template qui comporte la structure globale des pages,

- il est déclaré comme parent dans les autres vue et il sera hérité par @extends()

@extends('layouts.template')

- Dans le Template on prévoit un emplacement @yield pour que les vues enfants puissent placer leur code.

<div class="section">

<div class="container">

@yield('content')

</div>

</div>
Blade

EXEMPLE :

template.blade.php

<html>

<body>

@yield('header')

@yield('content')

@yield('footer')

</body>

</html>
Blade

page.blade.php

@extends('template')
@section('header')
ceci est le header
@endsection
@section('content')
ceci est le contenu
@endsection
@section('footer')
ceci est le footer
@endsection
Blade

Activité :

1- créer un dossier layouts dans resources/views/

2- créer un fichier template.blade.php dans resources/views/layouts/

3- copier ce code dans le fichier template :


<html> @yield('title') est utilisé pour afficher la valeur du
<head> titre
<title>App Name - @yield('title')</title>
</head> @section('sidebar') est utilisé pour définir une
<body> section nommée sidebar
@section('sidebar’)
contenu par defaut du sidebar. @show est utilisé pour afficher le contenu d’une
@show section
<div class="container">
@yield('content') @yield('content') est utilisé pour afficher la valeur
</div> du contenu
</body>
</html>
Blade
@extends('layouts.template') étend la mise en page principale
3- créer un fichier page.blade.php
dans resources/views/ @section('title', 'titre de la page') définit la valeur de la section de
titre
4- copier ce code dans page :
@extends('layouts.master')
@section('title', ‘test titre') @section('sidebar') définit une section sidebar dans la page
@section('sidebar') enfant de template
@parent
@parent affiche le contenu de la section sidebar, définie dans
<p>nouveau contenu sidebar</p>
template
@endsection
@section('content')
@endsection termine la section sidebar
<p>ceci est le texte du contenu</p>
@endsection @section('content') définit la section de contenu

@endsection termine la section de contenu


5- créer la route nécessaire et tester
Blade

L’inclusion dans BLADE :

- Dans un projet LARAVEL nous pouvons décomposer un Template en plusieurs fichiers


(header.blade.php, menu.blade.php, footer.blade.php…) dans l’objectif de mieux organiser et aléger
votre code source

- utiliser @include() pour importer les parties du code dans le fichier du Template principal
@include('layouts.head' )
@include('layouts.header' )
@include('layouts.menu' )

<div id = "main" class = "row" >


@yield('content' )
</div>

@include('layouts.footer' )
Blade

Exercice pratique :
1- Télécharger un template gratuit de site web e-commerce
2- Integrer le template du site dans votre projet
3- décomposer votre template
4- developper 4 pages du site web :
- page d’accueil
- page présentation
- page produits
- page contact

Vous aimerez peut-être aussi