Vous êtes sur la page 1sur 43

LARAVEL (8-2021) – FRAMEWORK PHP

1
SOMMAIRE

Sommaire ................................................................................................................................... 1
Etape 1........................................................................................................................................ 3
1 - Laravel (v1) ..................................................................................................................................... 3
Principes du cours......................................................................................................................................... 3
Laravel : framework PHP pour les artisans du web ...................................................................................... 3
Qu’est-ce que Laravel : c’est un framework PHP .....................................................................................................3
Site interet : https://laravel.com/ ............................................................................................................................3
Laravel 9 actuellement (en 2022). ............................................................................................................................3
Concepts de base :........................................................................................................................................ 3
Prérequis : ..................................................................................................................................................... 4
Rappel d’une architecture WEB de base. .................................................................................................................4
2 - Installer Laravel (v3, v4) ................................................................................................................... 5
Mise en garde : attention ............................................................................................................................. 5
Composer :.................................................................................................................................................... 6
Présentation..............................................................................................................................................................6
Tester la présence de composer sur votre machine : ..............................................................................................6
Aide en ligne de commande .....................................................................................................................................6
Bizarreries Sur mac ...................................................................................................................................................7
Packagist ....................................................................................................................................................... 8
PHP................................................................................................................................................................ 8
Créer une application laravel :...................................................................................................................... 9
Principes ....................................................................................................................................................................9
Un dossier pour toutes nos applications ..................................................................................................................9
1 : avec composer create-project (on peut ne faire que ce cas là) ........................................................................10
2 : avec laravel/installer ..........................................................................................................................................11
3 : avec Laragon ......................................................................................................................................................12
Démarrer une application Laravel .............................................................................................................. 13
php artisan ..............................................................................................................................................................13
Démarrage du server ..............................................................................................................................................14
Démarrage de l’application dans un navigateur ....................................................................................................15
Rappel du fonctionnement client - serveur web ....................................................................................................16
3 – Architecture, manipulation et bilan (v3, v4) ....................................................................................17
Architecture d’un projet Laravel : .............................................................................................................. 17
Quelques fichiers à regarder pour commencer .....................................................................................................17
Les dossiers installés ...............................................................................................................................................18
2 premiers répertoires dans le répertoire app : .....................................................................................................20
Autres répertoires du répertoire app (pour plus tard) ...........................................................................................20
Manipulation d’un projet laravel................................................................................................................ 21
Taille du dossier ......................................................................................................................................................21
Suppression du dossier vendor et composer update .............................................................................................21
Modification de l’affichage .....................................................................................................................................22

Etape 2.......................................................................................................................................23
0 - Présentation ..................................................................................................................................23
Principe du document ................................................................................................................................ 23
Objectifs à atteindre ................................................................................................................................... 23
Objectifs de l’étape 2.................................................................................................................................. 23

Laravel – P1 – page 1/43


1 – t (v5) .............................................................................................................................................24
Objectifs ...................................................................................................................................................... 24
Installation de l’application ........................................................................................................................ 25
Création du projet Laravel matodolist ....................................................................................................................25
Création de la base de données associée ...............................................................................................................26
Création des tables de la base de données avec un « php artisan migrate » ........................................................29
Problèmes de base de données ..............................................................................................................................30
Principes techniques pour l’authentification ............................................................................................. 33
Avant : .....................................................................................................................................................................33
Maintenant: ............................................................................................................................................................33
Le package « ui » .....................................................................................................................................................33
Installation du package laravel ui ............................................................................................................... 34
Charger ui avec composer ......................................................................................................................................34
Résultats de l’installation : php artisan ..................................................................................................................34
Installation de l’authentification dans notre projet : ................................................................................. 35
Test de l’installation de l’authentification .................................................................................................. 36
Démarrage du serveur et d’un client : ....................................................................................................................36
Enregistrement d’un utilisateur : ............................................................................................................................37
Vérification en BD ...................................................................................................................................................39
Routes .....................................................................................................................................................................40
Fichiers modifies : routes et MVC............................................................................................................... 41
Routes .....................................................................................................................................................................41
Controller ................................................................................................................................................................42
View ........................................................................................................................................................................42
Synthèse : ................................................................................................................................................... 43
Commande ..............................................................................................................................................................43
Fichiers modifiés .....................................................................................................................................................43

Laravel – P1 – page 2/43


ETAPE 1

1 - Laravel (v1)

Principes du cours
Les parties surlignées de bleu correspondent à des installation ou exercices à faire.
Les parties surlignées en jaune sont des concepts importants.

On commencer par une présentation complète du document, puis on fait le TP.

Laravel : framework PHP pour les artisans du web

Qu’est-ce que Laravel : c’est un framework PHP


 Il fournit une architecture semi finie qui sert de « patron » pour notre travail.
 Il fournit des outils pour générer du code automatiquement avec l’outil « php artisan ».
 Il permet d’ajouter facilement de nouvelles briques avec l’outil « composer ».

Site interet : https://laravel.com/


 Le site donne accès à la documentation.
 On peut la traduire en français dans le navigateur.

Laravel 9 actuellement (en 2022).

Concepts de base :
• Installation – Composer – Packagist
• Architecture d’un projet Laravel. MVC (on revient sur le MVC à l’étape 3).
• Routage (pour faciliter les chemins d’accès aux pages du site)
• ORM Eloquent (pour faciliter l’usage de la BD). La notion de « migration ».
• Moteur de templates Blade (pour faciliter l’écriture des Vues du MVC).
• La commande « php artisan »

Laravel – P1 – page 3/43


Prérequis :
• Architecture WEB de base.
• PHP
• P.O.O.
• SGBD-R – MySQL ou équivalent.
• HTML-CSS-Bootstrap

Rappel d’une architecture WEB de base.

Laravel – P1 – page 4/43


2 - Installer Laravel (v3, v4)

Mise en garde : attention


• L’installation peut s’avérer compliquée (ou se passer sans problème) ! Il ne faut pas se
décourager.
• Quand on passe des commandes en ligne de commandes, il faut lire les messages qui s’affiche
(au moins la fin) : on y trouve parfois des pistes de solutions.
• Il faut chercher sur Google des solutions.
• Accrochez-vous. On finit par y arriver !

Laravel – P1 – page 5/43


Composer :

Présentation
• Pour pouvoir utiliser Laravel, on commence par installer « Composer ».
• Le site de « Composer » permet son installation : https://getcomposer.org/
• « Composer » permet d’installer une application Laravel avec toutes ses dépendances.
• Composer installe les versions des packages qui doivent être installés en les téléchargeant dans
votre projet.
• De façon générale, si on a un projet qui dépend de bibliothèques et que certaines de ces
bibliothèques dépendent d'autres bibliothèques, Composer vous permet de mettre à jour toutes
les dépendances en une seule commande, en déclarant seulement les bibliothèques dont vous
dépendez (c’est la commande « composer update »).
• Pour utiliser « composer », tout se passe dans le fichier composer.json à la racine de votre
projet. Ce fichier va définir toutes les informations concernant votre projet ainsi que toutes ses
dépendances : la clé require précise les modules et bibliothèques dont on a besoin ainsi que
leurs versions.
• Composer est un équivalent du « npm » pour node.js.

Tester la présence de composer sur votre machine :


composer --version
composer -v

• Si composer n’est pas présent, installer le sur votre machine.

Aide en ligne de commande


• Une fois installé, les commandes suivantes permettent de récupérer de l’information :
>composer -h
>composer list

• Usage basique : https://getcomposer.org/doc/01-basic-usage.md


• Liste des commandes : https://getcomposer.org/doc/03-cli.md

Laravel – P1 – page 6/43


Bizarreries Sur mac
• https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos
• https://getcomposer.org/download/
• Instructions à exécuter pour avoir une version globale :
php -r "copie ('https://getcomposer.org/installer', 'composer-
setup.php');"

php -r "if (hash_file ('sha384', 'composer-setup.php') ===


'756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a
59d27d63f46af1d4d07ee0f76181c7d setup installeur non vérifié'
echo3 'autre compositeur' php ');} echo PHP_EOL; "

php composer-setup.php

php -r "unlink ('composer-setup.php');"

mv composer.phar /usr/local/bin/composer

Laravel – P1 – page 7/43


Packagist
• https://packagist.org/ = PHP Package Repository = dépôt de paquets PHP
• Ce site permet de chercher tous les packages disponibles mais aussi d’enregistrer vos propres
packages.

PHP
• Laravel utilise du PHP, il faut donc que le PHP soit installé sur nos machines.

➢ Pour savoir si PHP est installé :


>php –-version
>php -v

➢ Pour installer PHP sur MAC :


• https://www.php.net/manual/fr/install.macosx.packages.php
>brew install php

➢ Pour installer PHP sur PC :


• XAMPP permet d’installer PHP
• https://www.apachefriends.org/fr/index.html

Laravel – P1 – page 8/43


Créer une application laravel :

Principes
https://laravel.com/docs/9.x/configuration
• 3 techniques :
− avec composer create-project : le plus simple
− avec laravel/installer : plus compliqué
− avec Laragon : que sous Windows
• Pour tout installer, on utilisera en priorié la première technique.

Un dossier pour toutes nos applications


• Dans votre dossier de cours Laravel, créez un dossier Applications
− Ouvre un terminal dans un dossier Lavarel/Applications

Laravel – P1 – page 9/43


1 : avec composer create-project (on peut ne faire que ce cas là)

➢ Principes
• Composer propose des outils qui vont installer un squelette d’application PHP avec un serveur
WEB.

➢ Créer un projet Laravel


• Pour créer un projet Laravel nommé « monApp », on passera la commande
>composer create-project laravel/laravel monApp

➢ Documentation Laravel :
• https://laravel.com/docs/8.x/installation#installation-via-composer

➢ Documentation getComposer :
• https://getcomposer.org/doc/03-cli.md#create-project

➢ 1 : installation de notre application :


>composer create-project laravel/laravel monApp

• Vieille version :
>composer create-project –prefer-dist laravel/laravel monApp

➢ 2 : Démarrage du serveur apache


>cd monApp
>php artisan serve

• La commande php artisan serve démarre le serveur de développement et précise l’adresse pour
accéder à l’application dans un message :
Starting Laravel development server: http://127.0.0.1:8000

➢ Résumé des commandes


>composer create-project laravel/laravel monApp
>cd monApp
>php artisan serve

Laravel – P1 – page 10/43


2 : avec laravel/installer
• Documentation Laravel :
− https://laravel.com/docs/8.x/installation#the-laravel-installer

➢ Installer :
• On commencer par installer le laravel/installer comme dépendance globale de Composer.
>composer global req laravel/installer

• On crée une application avec laravel :


>laravel new monApp

• Problème : laravel n’est pas reconnu !!!

➢ Il faut mettre à jour le $PATH (variable d’environnement)


• Sur MAC :
>echo $PATH
>export PATH=$PATH:$HOME/.composer/vendor/bin
>echo $PATH

− La modification ne sera valable que sur le terminal où l’on fait l’export.


− On peut alors exécuter laravel dans ce terminal
− On peut aussi ne pas changer le path et passer la commande :
>$HOME/.composer/vendor/bin/laravel new monApp

• Sur PC :
− On ajoute une nouvelle variable d’environnement :
%USERPROFILE%\AppData\Roaming\Composer\vendor\bin

− Pour accéder aux variables d’environnement : cherchez variables, allez dans modifier les
variables d’environnement, cliquez sur variables d’environnement, double-cliquez sur le
path des variables utilisateur, ajoutez la variable.
− On peut alors exécuter laravel dans un terminal
• Sur Linux :
− Cf doc laravel et google !

➢ Démarrer le serveur
>cd monApp
>php artisan serve

• La commande php artisan serve démarre le serveur de développement et précise l’adresse pour
accéder à l’application dans un message :
Starting Laravel development server: http://127.0.0.1:8000

Aide en ligne de commande


>$HOME/.composer/vendor/bin/laravel -V
>$HOME/.composer/vendor/bin/laravel -h
>$HOME/.composer/vendor/bin/laravel list

• Il n’y a qu’une commande : la commande « new »


>$HOME/.composer/vendor/bin/laravel new monApp

Laravel – P1 – page 11/43


➢ Résumé :
>composer global req laravel/installer
># mise à jour du path
>laravel new monApp
>cd monApp
>php artisan serve

3 : avec Laragon
• Laragon est un très bon outil mais disponible uniquement sur Windows !
• http://laragon.org

Laravel – P1 – page 12/43


Démarrer une application Laravel

php artisan
• « php artisan » est l'interface de ligne de commande incluse avec Laravel.
• La commande « php artisan » s’utilise dans un projet laravel.

➢ Aide en ligne
• On commence par se mettre dans son projet :
>cd monApp

• Ensuite on peut taper les commandes :


>php artisan --version
>php artisan list

➢ Quelques commandes artisan


>php artisan make
>php artisan migrate
>php artisan serve
Etc.

➢ Documentation complète
• https://laravel.com/docs/8.x/artisan
• Documentation spécifique -> par exemple
php artisan migrate

Laravel – P1 – page 13/43


Démarrage du server
• La commande Laravel « php artisan serve » permet d'exécuter des applications sur le serveur de
développement PHP.
• Elle propose un port disponible pour démarrer un client.

• Pour démarrer le serveur :


>cd monApp
>php artisan serve

• On obtient un message :
Starting Laravel development server: http://127.0.0.1:8000

• L’adresse proposée permet d’exécuter l’application dans un navigateur

Laravel – P1 – page 14/43


Démarrage de l’application dans un navigateur
• Une fois le serveur démarré et le message obtenu :
Starting Laravel development server: http://127.0.0.1:8000
• Dans un navigateur, on passe l’adresse renvoyée par php artisan serve :
− http://127.0.0.1:8000
ou encore :
− http://localhost:8000

➢ Résultats Laravel 8 :

➢ Résultats Laravel 7 :

Laravel – P1 – page 15/43


Rappel du fonctionnement client - serveur web

Laravel – P1 – page 16/43


3 – Architecture, manipulation et bilan (v3, v4)

Architecture d’un projet Laravel :


• Explications sur l’architecture du projet
 ici : doc ici
 et là : https://laravel.com/docs/8.x/structure
• Pour le moment, on peut se familiariser regarder un peu le contenu. On va se familiariser au fur
et à mesure avec tout ce qu’il contient.

Quelques fichiers à regarder pour commencer

➢ .env
• Il contient entre autres des infos sur la BD :
− le type de BD : mysql,
− l’utilisateur, son mot de passe : à adapter à votre système (root sans mot de passe sur PC,
root mot de passe root sur Mac)
− le nom de la BD (pour la BD, la collation utf8mb4_general_ci permet d’intégrer les
smiley) : il faut créer une BD correspondant à ce nom pour développer l’application.

➢ composer.json
• La clé « require » précise les dépendances de notre application laravel.

Laravel – P1 – page 17/43


Les dossiers installés

➢ app
− Contient tout le code généré pour l’application.
− Il contient de nombreux autres répertoires qui sont détaillés après.

➢ bootstrap
− Permet l’initialisation du framework bootstrap.

➢ config
− Contient l’ensemble des fichiers de configurations de l’application.

➢ database
− Contient les informations pour le SGBD.

➢ node_modules
− Contient les packages pour Nodes si on l’utilise.

Laravel – P1 – page 18/43


➢ public
− Point d’entrée unique de l’application par l’intermédiaire du fichier « index.php ».
− Seul répertoire visible de l’extérieur. Tous les autres sont cachés et protégés des attaques
de l’extérieur.
− Contient également vos différents assets tels que les images, les fichiers CSS et JavaScripts
compilés.

➢ resources
− Contient, dans le dossier « views », l’ensemble des fichiers de Vues gérés par défaut par le
moteur de template de Laravel : Blade.
− Contient les fichiers de langues dans le cas d’une application multilingues.

➢ routes
− Contient des fichiers listant l’ensemble des routes utilisées par votre application.

➢ storage
− Contient des fichiers compilés automatiquement par le système.

➢ tests
− Contient les tests unitaires. Laravel utilse PHPUnit.

➢ Vendor
− Contient les dépendances Composer associées à l’application (c’est l’équivalent de
node_modules pour Nodes).

Laravel – P1 – page 19/43


2 premiers répertoires dans le répertoire app :
− L’essentiel de l’application se trouve dans le répertoire app.

➢ Http
• Contient les contrôleurs de l’architecture MVC.
• Documentation Laravel associée : https://laravel.com/docs/9.x/controllers

➢ Models
• Contient les modèles de l’architecture MVC (les classes correspondant à la BD).
• Documentation Laravel associée : https://laravel.com/docs/9.x/eloquent

Autres répertoires du répertoire app (pour plus tard)

➢ Exceptions
• https://laravel.com/docs/9.x/errors

➢ Providers
• https://laravel.com/docs/9.x/providers

Laravel – P1 – page 20/43


Manipulation d’un projet laravel

Taille du dossier
• Dossier monApp : 35 MO
• Dossier vendor : 34,6 MO

Suppression du dossier vendor et composer update


• On peut supprimer le dossier vendor : notre application ne pèse plus que 0,43 MO !
 « php artisan serve » ne marche plus
• On peut refabriquer le fichier vendor :
>composer update
>php artisan serve
Starting Laravel development server: http://127.0.0.1:8000

Laravel – P1 – page 21/43


Modification de l’affichage
• Le fichier de description de la page d’accueil est dans le dossier « ressources / views »
 Fichier « ressources / views / welcome.blade.php »
• Pour le trouver, on peut chercher « bigcartel » qui est le lien de Shop
 On le trouve dans « ressources / views / welcome.blade.php »
 On le trouve aussi dans le dossier « storage » qui contient des fichiers compilés, donc
fabriqués automatiquement par le système.
• Modifiez le fichier welcome.blade.php pour obtenir le résultat suivant :
 On a rajouté « cours IFAA de Laravel ». Le lien amène sur la page du site avec le cours
laravel de l’IFAA.

Laravel – P1 – page 22/43


ETAPE 2

0 - Présentation

Principe du document
Les parties surlignées de bleu correspondent à des installation ou exercices à faire.
Les parties surlignées en jaune sont des concepts importants.

Objectifs à atteindre
• Le cours et les différentes étapes de TP à partir de l’étape 2 consistent à produire une
application ressemblant à :

Objectifs de l’étape 2
• Se familiariser avec Laravel.

Laravel – P1 – page 23/43


1 – t (v5)

Objectifs
• Laravel nous permet de mettre en place des fonctionnalités plus facilement en installant des
packages tout près.
• On va installer un package pour l’authentification (utilisateur, login, mot de passe, etc):
 C’est le package « ui »
 C’est un package d'authentification des utilisateurs (Il y a plus récent, comme « breeze » :
https://github.com/laravel/breeze)
• Pour ça, on va installer les tables de la BD pout gérer les utilisateurs.
 Vieille documentation sur la BD : certaines descriptions de tables peuvent encore
correspondre, mais c’est la version 5.3 et on en est à la version 8 en 2021.
• L’installation du package installe plusieurs routes.
 Les routes sont des urls d’accès à l’application (au site WEB).
 On va créer une page « à la main » avec une seule route.

Laravel – P1 – page 24/43


Installation de l’application

Création du projet Laravel matodolist

➢ On repart d’une application vierge : « matodolist » qu’on va créer :


>composer create-project laravel/laravel matodolist

− Ou :
>$HOME/.composer/vendor/bin/laravel new matodolist

➢ On teste le projet
>cd matodolist
>php artisan serve

Laravel – P1 – page 25/43


Création de la base de données associée
• Notre application va utiliser une base de données. Des utilisateurs pourront se connecter.
• Cette possibilité est présente par défaut dans l’installation d’une application Laravel.
• Le package UI qu’on va installer nous permettra d’installer des fonctionnalités pour les
utilisateurs (enregistrement, login, logout, gestion des mots de passe).
• Pour faire ça, il faut avoir un serveur de BD qui fonctionne.
• On va donc installer un serveur de BD en installant un environnement pour la programmation
WEB avec XAMPP.

➢ Installer XAMPP : https://www.apachefriends.org/fr/index.html

Laravel – P1 – page 26/43


➢ Démarrer les services de XAMPP
• Pour démarrer le serveur Apache : Start
• Pour démarrer MySQL (Maria-DB) : Start
• Pour démarrer PHP MyAdmin : Admin (de MySQL)
• Pour ouvrir le dossier du serveur local : Explorer / htdocs
• Pour ouvrir un terminal : shell
• Pour démarrer un client mysql : shell + cd myslql/bin

Laravel – P1 – page 27/43


➢ Création de la BD « matodolist »
• Dans un client mysql (ça peut être phpMyAdmin) créez la BD matodolist (ou avec
PhpMyAdmin) :
Mysql> create database matodolist
Mysql> use matodolist
Mysql> show tables
Empty set (0,00 sec)

 Il faut démarrer un serveur MySQL : on peut le faire à partir d’un XAMPP (à éviter sur
Mac pour Laravel), WAMP (sur PC), MAMP (sur Mac) ou Laragon (que sur PC) ou ou « à
la main.
 Vérifier la cohérence du port de MySQL : probablement 3306

Laravel – P1 – page 28/43


Création des tables de la base de données avec un « php artisan migrate »

➢ Mise à jour du fichier .env


• Dans le fichier .env, mettre à jour le DB_USERNAME et DB_PASSWORD si nécessaire.

➢ Création de la BD « matodolist »
• Dans le fichier .env, mettez le bon DB_DATABASE :
DB_DATABASE = matodolist

• Dans le fichier .env, mettez le bon DB_USERNAME et DB_PASSWORD:


DB_USERNAME=root
DB_PASSWORD=

➢ Mise à jour de la BD : php artisan migrate


• On peut créer la BD avec les commandes suivantes :
>php artisan config:cache # par prudence, on peut vider les caches
>php artisan cache:clear # par prudence, on peut vider les caches
>php artisan migrate

➢ Consultation des tables créées dans la BD


• La commande « php artisan migrate » a créé 4 tables :
mysql> show tables;
+----------------------+
| Tables_in_matodolist |
+----------------------+
| failed_jobs | -> vide
| migrations | -> 3 migrations
| password_resets | -> vide
| users | -> vide
+----------------------+

• La table migration enregistre les migrations effectuées : c’est la première table créée.
mysql> select * from migrations;
+----+------------------------------------------------+-------+
| id | migration | batch |
+----+------------------------------------------------+-------+
| 1 | 2014_10_12_000000_create_users_table | 1 |
| 2 | 2014_10_12_100000_create_password_resets_table | 1 |
| 3 | 2019_08_19_000000_create_failed_jobs_table | 1 |
+----+------------------------------------------------+-------+

Laravel – P1 – page 29/43


Problèmes de base de données

➢ Avant le php artisan migrate


• Il est possible qu’il faille commencer par mettre à jour le fichier
App/Providers/AppServicesProvider.php
 Mais c’est peut-être déjà fait !!!
 On ajoute la ligne suivante juste après le 1er use :
use Illuminate\Support\Facades\Schema; // juste après le 1er use

 On ajoute la ligne suivante dans la fonction boot


Schema::defaultStringLength(191); // dans la fonction boot

➢ En cas d’erreur Illuminate\Database\QueryException


• Il faudra peut-être supprimer la BD et la recréer (pour la vider) :
Mysql> drop database matodolist
Mysql> create database matodolist
Mysql> use matodolist

• Il faudra peut-être appeler la BD : « laravel »

➢ Problème de BD : Connection Refused


• Application http://127.0.0.1:8000/, menu Register : route : http://127.0.0.1:8000/register
• On saisit le formulaire : connection refused.
• Solution : Le serveur de BD ne tourne pas ! Il faut le démarrer avec XAMPP ou d’autres
techniques.

Laravel – P1 – page 30/43


➢ Autres problèmes de BD :
• Application http://127.0.0.1:8000/, menu Register : route : http://127.0.0.1:8000/register
• On saisit le formulaire :
 erreur dans le fichier vendor/laravel/framework/src/Illuminate/Database/Connection.php
• Solution : La BD n’existe pas : dans le fichier « .env », il faut choisir un nom pour la BD,
vérifier que le username de la BD est bon ainsi que son passaword (root, vide sur PC, root, root
sur MAC). Il faut ensuite créer un client mysql : create database laraveltodo ;
• Fichier .env sur MAC :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=matodolist
DB_USERNAME=root
DB_PASSWORD=root

• Création de la BD dans un client mysql :


mysql>create database matodolist;

− From MySQL 8.0, utf8mb4 is the default character set.


 On peut aussi écrire : create database laraveltodo CHARACTER SET = utf8mb4
COLLATE = utf8mb4_ general_ci;
• Quand on met à jour le fichier .env, mieux vaut relancer le serveur puis l’application.
>php artisan serve

Laravel – P1 – page 31/43


➢ Problème de BD : les tables n’existent pas.
• Application http://127.0.0.1:8000/, menu Register : route : http://127.0.0.1:8000/register
• On saisit le formulaire : la table users n’existe pas.
• On a un message qui propose de faire un « php artisan migrate » ou de passer par un bouton qui
va le faire pour nous.
• Une fois le migrate fait, toutes les tables de la BD sont créées. On peut les regarder en faisant
un « show tables » en console mysql.

➢ Problème fonctionnel : le mot de passe doit avoir au moins 8 caractères


• Application http://127.0.0.1:8000/, menu Register : route : http://127.0.0.1:8000/register
• On saisit le formulaire : ça fonctionne. On crée un utilisateur John Doe et un utilisateur Fred.
• On peut mettre les adresse mail qu’on veut. Si on met une adresse mail fonctionnelle, on
recevra des mails de l’application (c’est vite lassant !).
• Le mot de passe doit avoir au moins 8 caractères : exemple : laravelmdp
• On peut regarder l’utilisateur saisi dans la BD en console MySQL :
mysql>desc laraveltodo.users ;
mysql>select id, name, email, password from laraveltodo.users;

Laravel – P1 – page 32/43


Principes techniques pour l’authentification

Avant :
php artisan make:hote # générait les vues nécessaire

Maintenant:
• Un package à installer : le package « ui »

Le package « ui »
• packagist.org : chercher ui
 laravel/ui : on trouve des informations sur l’installation.
• On peut aussi regarder sur github, on y trouve des informations sur le package ui
 https://github.com/laravel/ui : on trouve aussi des informations sur github : entre autres des
packages pour remplacer ui.

Laravel – P1 – page 33/43


Installation du package laravel ui

Charger ui avec composer


• On trouve les informations sur le package ui et son installation sur packagist.org, ici : laravel/ui
• Pour installer le package ui, on tape, en ligne de commande, dans le dossier « matodolist », la
commande « composer require » :
> composer require --dev laravel/ui

 On utilise require --dev pour le développement. Pour la production on peut s’en passer.
 La commande « composer require » permet de charger un package : ici « ui ».

Résultats de l’installation : php artisan


• Après l’installation, php artisan montre de nouvelles commande : ui
> php artisan
...
ui
ui:auth Scaffold basic login and registration views and routes
ui:controllers Scaffold the authentication controllers
...

 Scaffold peut se traduire « échafaudage » ou « patron » au sens du « pattern » du


framework.
 Les deux commandes permettent donc de mettre en place la création d’un utilisateur
(registration) et le login d’un utilisateur avec les vues et les routes associées et aussi les
contrôleurs associés.
• Aide
> php artisan ui --help

Laravel – P1 – page 34/43


Installation de l’authentification dans notre projet :
• Une fois le package « ui » chargé dans notre projet, on va pouvoir l’utiliser et installer les
fonctions de création d’un utilisateur (registration) et de login d’un utilisateur (login). C’est
l’option « auth » qui permet ça. On précise avec l’option « bootstrap » qu’on aura un affichage
avec bootstrap.
• La commande suivante permet l’installation des fonctionnalités d’enregistrement et de login
d’un utilisateur :
> php artisan ui bootstrap --auth

• Il faut effectuer ces deux commandes : « npm install » et « npm run » pour charger et compiler
des éléments Nodes nécessaires à l'authentification et générer le CSS et JavaScript nécessaires
à l'authentification.
• Il faut passer plusieurs fois les commandes si nécessaire jusqu’à ce qu’il n’y ait plus d’erreurs.
• Les commandes :
> npm install && npm run dev
> npm install && npm run dev

• Résultats des commandes :

Laravel – P1 – page 35/43


Test de l’installation de l’authentification

Démarrage du serveur et d’un client :

> php artisan serve


Starting Laravel development server: http://127.0.0.1:8000

 On a le « login » et le « register » :

Version sombre :

Laravel – P1 – page 36/43


Enregistrement d’un utilisateur :
• on clique sur Register :

 On a la route : localhost :8000/register


 On met un nom, un mail, un password d’au moins 8 caractères.

Laravel – P1 – page 37/43


• On est logué :

 On a la route : localhost :8000/home : c’est la route de la page d’accueil de l’utilisateur


loggué, ici « toto ».
 Le menu «toto » permet un logout.
 Le menu « Laravel » ramène à la page l’accueil.

• Tester tous les usages possibles à ce stade.

Laravel – P1 – page 38/43


Vérification en BD
• On peut vérifier la présence des utilisateurs créés dans la BD.
• Dans une console mysql :
mysql> select id, name, email, created_at from users;
+----+----------+--------------+---------------------+
| id | name | email | created_at |
+----+----------+--------------+---------------------+
| 1 | bertrand | bl@gmail.com | 2021-02-27 17:43:14 |
+----+----------+--------------+---------------------+
1 row in set (0,00 sec)

Laravel – P1 – page 39/43


Routes

➢ Voir toutes les routes :


• La commande suivane permet d’afficher toutes les routes :
> php artisan route:list

• Seuls les routes avec un méthode GET (ou HEAD) sont accessibles par l’URL : on peut toutes
les tester :
 http://localhost:8000/ : amène à la page d’accueil. La route d’entrée est donc :
http://127.0.0.1:8000/ ou http://localhost:8000/
 http://localhost:8000/register : amène sur la page de création d’un utilisateur si personne
n’est logué, ou sur la page home de l’utilisateur logué.
 http://localhost:8000/login : amène sur la page de login
 http://localhost:8000/home : amène sur la page de login si personne n’est logué, ou sur la
page home de l’utilisateur logué.
 http://localhost:8000/password/reset : amène sur une page de reset d’un password.
 http://localhost:8000/password/reset/1 : amène sur une page de changement de password.

 http://localhost:8000/logout : ne marche pas : c’est une route avec une méthode POST.

Laravel – P1 – page 40/43


Fichiers modifies : routes et MVC

Routes

➢ Fichier des routes : routes/web.php


• Au départ, le fichier ne contient une seule route : « / ».
Route::get('/', function () {
return view('welcome');
});

• Cette route est associée à la vue « welcome » (fichier welcome.blade.php)

➢ Après installation du package UI


• On a 1 nouvelle route :
Route::get(
'/home',
[App\Http\Controllers\HomeController::class, 'index']
)->name('home');

Auth::routes();
 La route « '/home' » : c’est la page d’accueil une fois logué.
 Les routes de Auth : ce sont toutes les routes d’authentification. On retrouve le nom
« Auth » dans le dossier des actions des routes dans la commande php artisan routes :list.

Laravel – P1 – page 41/43


Controller

➢ Fichier App\Http\Controllers\HomeController.php
• C’est le controller appelé par la route « /home »
• Ce contrôleur appelle une vue (du HTML) :
return view('home');

➢ Fichiers dans App\Http\Controllers\Auth


• Tous les fichiers dans ce dossier Auth sont les controllers pour l’authentification.

View

➢ Fichier des vues initial : ressources/views/welcome.blade.php


• La vue « welcome » correspond au ficher « welcome.blade.php » dans le dossier
« ressources/views ».
 C’est un fichier « blade », c’est-à-dire un fichier template html avec du code php qui sera
compilé par blade en pur html (comme babel traduit du html en javascript).
 On constate la présence de PHP précédé de « @ »

➢ Fichier ressources/views/home.blade.php
• C’est la vue appelée par le controller.
• C’est un fichier « blade » : un template qui intègre du HTML et du PHP.

➢ Fichiers dans ressources/views/Auth


• Tous les fichiers dans ce dossier Auth sont les vues pour l’authentification.

Laravel – P1 – page 42/43


Synthèse :

Commande

>composer create-project laravel/laravel matodolist


>cd matodolist
>php artisan serve

Mysql> create database matodolist

> # mettre à jour le fichier App/Providers/AppServicesProvider.php

>php artisan config:cache # par prudence, on vide les caches


>php artisan cache:clear # par prudence, on vide les caches
>php artisan migrate

Mysql> use matodolist


Mysql> show tables

>composer require laravel/ui --dev


>php artisan ui bootstrap --auth // cf packagist.org
>npm install && npm run dev

>php artisan route:list

Fichiers modifiés

➢ Route
− routes/web.php

➢ Controller
− App\Http\Controllers\HomeController.php
− App\Http\Controllers\Auth\*

➢ View
− ressources/views/home.blade.php
− ressources/views/Auth\*

➢ node_modules
− on a créé un dossier node_modules

Laravel – P1 – page 43/43

Vous aimerez peut-être aussi