Vous êtes sur la page 1sur 53

FRAMEWORKS

PHP
Ebobissé Yves Frédéric
yebobisse.emsi@gmail.com

EMSI 2017- 2018 / 3IIR


Plan du Cours
Introduction
Objectifs
Design Pattern / Modèle MVC
Frameworks Avantages / Inconvenients

A - Laravel
1 - Introduction
* Prérequis , Installation & Configurations
* Le Routage & les Façades
* Les Vues : Moteur de template Blade
* Les Réponses
* Les Contrôleurs
* Les Entrées & Formulaires & Validation
* Les Configuration et Les Sessions
EMSI 2017- 2018 / 3IIR
Plan du Cours
A - Laravel
2 – Migrations et Modèles
* Eloquent : ORM
* Relations 1: 1
* Relations 1: N
* Relations N: N
* Laravel Schema Designer // DB Designer

EMSI 2017- 2018 / 3IIR


Introduction
Objectifs

- Comprendre le modèle MVC

- Comprendre les frameworks

- Apprendre à :
1. Installer
2. Configurer
3. Développer à l’aide de ces frameworks
Introduction
Design Patter / Modèle MVC

- M : Modèle
Contrôleur
- V : Vue

- C : Contrôleur

Modèle Vue
Introduction
Design Patter / Modèle MVC

- V : Vue :
Gère tout ce qui est affiché sur le Contrôleur
navigateur par exemple :
Formulaire, page de résultats,
etc..
Utilise principalement du HTML
mais aussi du php et des
annotations spécifiques liées au Modèle Vue
framework
Introduction
Design Patter / Modèle MVC

- M : Modèle
Gère toutes les relations avec la Contrôleur
base de données :

1. Requêtes d’insertion, de
suppression, modification,
etc…
Modèle Vue
2. Retourne un résultat brut sans
Html
Introduction
Design Patter / Modèle MVC

- C : Contrôleur
Gère les interactions entre la vue Contrôleur
et le modèle. Il est utilisé pour :

1. Vérification et validation des


données insérées dans un
formulaire
2. Gestion et contrôle des Modèle Vue
droits d’accès à une partie
3. Changer le design en fonction
de paramètres de l’utilisateurs,
via par exemple un cookie
Introduction
Design Patter / Modèle MVC

- C : Contrôleur
Gère les interactions entre la vue Contrôleur
et le modèle. Il est utilisé pour :

1. Vérification et validation des


données insérées dans un
formulaire
2. Gestion et contrôle des Modèle Vue
droits d’accès à une partie
3. Changer le design en fonction
de paramètres de l’utilisateurs,
via par exemple un cookie
Introduction
Frameworks : Avantages & Invonvénients

- un ensemble d’outils qui permettent de faciliter le développement


d’applications

- Réutilisation de briques logicielles et fonctionnalités déjà développées par


d’autres
Créateurs de requêtes sql, moteurs de templates, systems d’authentification,
envoi de mails, etc….

- Prise en main initiale peu être complexe (en fonction du framework)


- Surtout adapté à des projets évolutifs et grands
Introduction
Exemples de frameworks
Plan du Cours
Introduction
Objectifs
Design Pattern / Modèle MVC
Frameworks Avantages / Inconvenients

A - Laravel
1 - Introduction
* Prérequis , Installation & Configurations
* Le Routage & les Façades & Vues
* Les Réponses
* Les contrôleurs
* Les Entrées / Le Moteur de template Blade
* Les Configuration et Les Sessions
EMSI 2017- 2018 / 3IIR
Laravel
Version 5.6

- Réutilisation des meilleurs outils des autres frameworks


- Mais aussi
un système de routage perfectionné (RESTFul et ressources),
un créateur de requêtes SQL et un ORM performants,
un moteur de template efficace,
un système d'authentification pour les connexions,
un système de validation,
un système de pagination,
un système de migration pour les bases de données,
Laravel
Version 5.6

- Et :
un système d'envoi d'emails,
un système de cache,
un système d'événements,
un système d'autorisations,
une gestion des sessions...
Pré requis :

XAMPP : Serveur Apache Mysql, Php, Pearl


PHP Version >= 5.5.9
Extension PDO, Mbstring, OpenSSL, Tokenizer
https://www.apachefriends.org/fr/index.html

Cmder : Invite de commandes DOS plus convivial


http://cmder.net/
Pré requis

Composer : Gestionnaire de dépendances

https://getcomposer.org/download/

Se base sur un format de Fichier JSON qui décrit les outils nécessaires pour pou
voir créer une application et où les récupérer par exemple sur internet.
Pré requis

Installation :

Se placer dans le répertoire d’installation


CHDIR /D C:\......

Lancer la commande
composer create-project --prefer-dist laravel/laravel laravel5
Installation & Pré requis : Composer

Exemple de fichier JSON


Pré requis composant Html
Méthode 1 :
"laravelcollective/html": "5.6.* " à ajouter dans le fichier composer.json
Lancer la commande composer update
Ajouter
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
Dans le fichier config/app.php

Méthode 2 :
composer require "laravelcollective/html":"5.6.*"
Organisation des fichiers :
• Config : dossier contenant les paramètres de configuration liés à votre application par exemple,
paramètres de connexion à la base de données, systèmes de fichiers, fichiers journaux,
mails,etc…

• Public : partie accessible à partir du navigateur, de votre application, contiendra les images, css,
javascript.

• Resources : contient les vues, les fichiers de langue

• Routes : définition des routes notamment dans le fichier web.php

• Storage : fichiers de logs, session, cachue, etc..

•Vendor : contient les applications tiers / 3rd party / composants de Laravel et leurs dépendances
Routage & Façades:
Méthode d’envoi: get/post/…..

URL

Pour masquer l’organisation des


fichiers on utilise l’url rewriting ou la
réécriture d’url
Via un fichier .htaccess et
mod_rewrite activé sur le serveur
Routage & Façades:
1. Routes
• Servent à indiquer où seront analysées et dirigées les requêtes provenant du navigateur
• Elles sont définies dans le dossier /routes/web.php

route
1

3 Vue :
welcome
Routage & Façades:
1. Routes
• Servent à indiquer où seront analysées et dirigées les requêtes provenant du navigateur
• Elles sont définies dans le dossier /routes/web.php

Route : définir la route que nous allons suivre


get : Récupération des données par la méthode get() ie tout ce qui vient après l’url
de base par exemple sera considéré comme transmis via la méthode get
/ : on traite les requêtes à partir de l’url de base
function() : définit une fonction anonyme dont le rôle sera de retourner soit
une vue, soit un message
Routage & Façades:
1. Routes
• Servent à indiquer où seront analysées et dirigées les requêtes provenant du navigateur

• Elles sont définies dans le dossier /routes/web.php

Pour chacune des pages de votre application il faudra donc définir une route.
Route::get('1', function() { return 'Je suis la page 1 !'; });

//La view welcome doit être définie dans le répertoire adéquat :


resources/views.nom_view.blade.php
Il faut omettre dans le fichier web.php .blade.php qui est un moteur de templates
NB : La vue génère le code HTML
En fonction du modèle choisi, il y a un cycle différent pour l’exécution d’une requête.
Routage & Façades:
1. 1- Routes paramétrées
• Si il n’y a pas énormément de différence entre les vues, il est possible d’ajouter des paramètres
qui retourneront la page demandée en fonction du paramètre transmis dans l’url

Route::get('{n}', function($n) { return 'Je suis la page ' . $n . ' !'; });
Accéder à la page localhost/laravel5/public/1

1.2-Routes paramétrées avec un condition sur la valeur


Route::get('{n}', function($n) { return 'Je suis la page ' . $n . ' !'; })-> where (‘n’,’[1-3]’);
Accéder à la page localhost/laravel5/public/5 provoque une erreur
1.3-Routes nommées
Route::get('/', ['as' => 'home', function(){return 'Je suis la page d\'accueil !'; }]);
Accéder à la page localhost/laravel5/public/home affiche la page d’accueil
Routage & Façades:

Travail à réaliser
1- Créer une route user retournant un message « bienvenue cher utilisateur sur la page
d’accueil»

2- Ajouter un paramètre à cette vue permettant de récupérer le nom de l’utilisateur passé en


paramètre dans l’url et retournant le message personnalisé avec le nom de l’utilisateur
Exemple /user/yassine va afficher bienvenue yassine sur votre page d’accueil

3- Puisque le nom de l’utilisateur ne doit contenir que des caractères alphabétiques, ajouter une
contrainte pour ne recevoir que des lettres majuscules et minuscules

4- Créer une vue produit qui ne pourra recevoir que des entiers
Routage & Façades:
2- Façades ou Alias
• Les bibliothèques et classes sont définies chacune dans des fichiers séparés.

Pour éviter les conflits de nom au cours de l’utilisation des classes, Laravel définit des Alias ou des
Façades

Route::get('{n}', function($n) { return 'Je suis la page ' . $n . ' !'; });
Dans ce code Route :: est une façade

Ces façades sont définies dans le fichier config/app.php

Le code correspondant à cette façade se trouve dans


vendor/laravel/framework/src/Illuminate/routing/Route.php
Réponses :

Le protocole http retourne des réponses avec des codes à toutes requêtes
effectuées pour une requête (page)
Exemple 200 => ok , 500 => Erreur, 404 => adresse/page introuvable

Route::get('{n}', function($n) { return response('Je suis la page ' . $n . ' !', 200);})->wh
ere('n', '[1-3]');
Vues :
Les vues sont créées dans le dossier resources/views/ et correspondent au code
HTML qui sera affiché sur le navigateur.

La vue doit au préalable être indiquée dans la route


Route::get('/', function() { return view('vue1'); });

Il faut définir la structure et la navigation au sein de votre application et identifier les pages à utiliser et
Les vues qui seront nécessaires

1. 1- Vues paramétrées
Si je veux transmettre une information à une vue je dois passer par un paramètre
Exemple http://url_base/article/n
Article : partie fixe, correspondra par exemple à la page générée pour l’affichage d’un
produit
n : partie variable, spécifie par exemple l’id du produit que je cherche à consulter
Vues :
1. 1- Définitions de Vues paramétrées

- Route::get('/mavue/{n}', function ($n) { return view('mavue')->with('numero', $n); })->


where('n', '[1-3]');
Ou
- Route::get('/mavue/{n}', function ($n) { return view('mavue')->withNumero($
n); })->where('n', '[1-3]');
withNumero : spécifie que la variable numero qui va récupérer l’information passée en paramètre
dans la vue
Remarque : withNumero a N en majuscule, mais dans la vue, la variable sera en minuscule

- Route::get('/mavue/{n}', function ($n) { return view('mavue', ['numero' => $n])


; })->where('n', '[1-3]');
en passant par un tableau associatif
Puis il faut travailler sur la vue pour récupérer l’information
transmise entre paramètres
Vues :

Une fois la route créée, définir le fichier contenant la vue mavue.blade.php


dans le répertoire /resources/views/

La vue contient le code HTML correspondant à l’affichage dans le navigateur


Ou le code php générant les pages
Par exemple <?php Je suis la vue echo $numero ?>
Vues :
1. Moteur de template Blade
Le rôle de ce moteur est de simplifier la syntaxe et le code tout en ajoutant des couches de sécurité

L’exemple pécédent sera plutôt écrit


Je suis la vue {{numero }} correspondant à Je suis la vue <?php echo $numero?>

Les conditions
@if(condition ) @switch($var )
//code condition vérifié @case(val)
@elseif(condition) //code
//Code condition @break
@else @case(val)
//code du else //code
@endif @break
@endswitch
@isset($var) @empty($var)
//code condition vérifié //code condition vérifié
@endisset @endempty
Vues :
1. Moteur de template Blade
Le rôle de ce moteur est de simplifier la syntaxe et le code tout en ajoutant des couches de sécurité

L’exemple pécédent sera plutôt écrit


Je suis la vue {{numero }} correspondant à Je suis la vue <?php echo $numero?>

Les boucles
@for($i=0;$i<=10;$i++ ) @foreach($p as $t)
//code //code
@endfor(condition) @endforeach
@while(condition)
//code condition vérifié
@endwhile

Les possibilités de Blade sont présentées sur la page suivante

https://laravel.com/docs/5.6/blade
Vues :

1. Moteur de template Blade


Il est possible de créer des templates et les incorporer à votre vue.
Exemple template.blade.php
Si je veux l’incorporer à la vue1 commencer par @extends(‘template’)
@yield(‘nom_section’) : permet de préciser quelle section sera utilisée pour remplacer dans cette partie
du template

template vue
@yield(‘titre’) @section(‘titre’)
//Définir le code qui correspond à la se
ction que vous voulez.
@endsection
Vues:

Travail à réaliser
1- Créer une route user retournant un message « bienvenue cher utilisateur sur la page
d’accueil»

2- Ajouter un paramètre à cette route permettant de récupérer le nom de l’utilisateur passé en


paramètre dans l’url et retournant le message personnalisé avec le nom de l’utilisateur
Exemple /user/yassine va afficher bienvenue yassine sur votre page d’accueil

3- Puisque le nom de l’utilisateur ne doit contenir que des caractères alphabétiques, ajouter une
contrainte pour ne recevoir que des lettres majuscules et minuscules

4- Créer une vue produit qui ne pourra recevoir que des entiers pour afficher des informations sur
1 prodiut sachant que le nombre est compris entre 1 et 7
Les contrôleurs :
Rôle : récupère la requête déjà triée par la route et définit la réponse appropriée à donner.
Les contrôleurs :
Rôle : récupère la requête déjà triée par la route et définit la réponse appropriée à donner.
Il s’agit d’une classe héritant de la classe Controller et possédant des méthodes qui vont renvoyer vers
des vues

L’outil artisan de Laravel permet de définir les contrôleurs


php artisan make:controller WelcomeController
Aller dans le répertoire /laravel5/app/http/Controllers
Et vous trouverez donc le contrôleur qui a été créé.
Il faut par la suite faire le lien avec la route qui a été créée.
1. Intégration du contrôleur dans le fichier routes/web.php:
A- Créer la route qui va appeler le contrôleur en spécifiant la méthode du contrôleur appelée
spécifiquement cette vue
Route::get('/',‘WelcomeController@index');
WelcomeController : Nom du contrôleur
@index: spécifier la méthode qui sera appelée
Les contrôleurs :
Rôle : récupère la requête déjà triée par la route et définit la réponse appropriée à donner.
Il s’agit d’une classe héritant de la classe Controller et possédant des méthodes qui vont renvoyer vers
des vues

1- Intégration du contrôleur :
B- Définir le contenu de la méthode index() dans le fichier WelcomeController.php
Le contenu de cette méthode n’est rien d’autre que le code
return view(‘welcome’); // qui avait été défini directement dans la route

Route::get(‘/’, ‘WelcomeController@index’);

Class WelcomeController extends Controller{


public function index(){
return view(‘accueil’);
}
}
Les contrôleurs :

Route::get(‘personne/{name}’, ‘PersonneController@afficher’);

Class PersonneController extends Controller{


public function afficher($name){
return view(‘prod’)->withNom($name);
}
}

NB : Un contrôleur peut avoir plusieurs méthodes qui retourneront des vues différentes. Il faut créer les
Routes en changeant simplement la méthode appelée
Vues:

Travail à réaliser Modifier les routes précédemment définies


pour les gérer via des contrôleurs

1- Créer une route user retournant un message « bienvenue cher utilisateur sur la page
d’accueil»

2- Ajouter un paramètre à cette route permettant de récupérer le nom de l’utilisateur passé en


paramètre dans l’url et retournant le message personnalisé avec le nom de l’utilisateur
Exemple /user/yassine va afficher bienvenue yassine sur votre page d’accueil

3- Puisque le nom de l’utilisateur ne doit contenir que des caractères alphabétiques, ajouter une
contrainte pour ne recevoir que des lettres majuscules et minuscules

4- Créer une vue produit qui ne pourra recevoir que des entiers pour afficher des informations sur
1 produit sachant que le nombre est compris entre 1 et 7
Les entrées et Formulaires :

Il y a donc 2 routes gérées par un seul contrôleur


1- celle de demande de formulaire : Route::get('/users','UserController@getInfos');
Elle est appelée la première fois que le formulaire est demandé puisqu’elle récupère les inform
ations dans l’url pour la page à afficher, en utilisant la méthode get
Et la vue qui correspond public function getInfos(){ return view(‘forminfos'); }
B - Définition de la vue forminfos : elle contient le code correspondant à un formulaire
Les entrées et Formulaires :

Route users

Fichier forminfos.blade.php
Les entrées et Formulaires :

Fichier template1.blade.php
Les entrées et Formulaires :

Il y a donc 2 routes gérées par un seul contrôleur


2- celle qui récupère les données transmises via le formulaire : par défaut la méthode POST
Route::post('/users','UserController@postInfos');
Les entrées et Formulaires :

Fichier WelcomeController.php

Fichier affichage.blade.php
Entrées et Formulaires:
Travail à réaliser
1- Générer les routes et le contrôleur associé CommandController.php qui permet d’accéder au
formulaire suivant

CommandForm

Mr Mme Mlle
Nom
Prénom

Produit Telephone/Montre/bracelet
Quantite
Age
Livraison à domicile

Annuler Commander
Entrées et Formulaires:

Travail à Facture
réaliser
2- Générer l’affichage Merci Mr Aziz Chamkhi les détails de votre
de la vue suivante commande de téléphone sont les suivants:
facture.blade.php
Entrées et Formulaires:
Notation Formulaires
Element/balise
<form> </form> {{Form::open([‘url’=>’valeur_url’ ])}} {{Form::close()}}
Label {{ Form::label(‘nom_balise_associée’, ‘texte_affiché’)}}
Zone de texte {{ Form::text(‘name’, ‘texte_affiché’)}}

Zone mot de passe {{Form::password(‘name’)}}


Checkbox {{Form::checkbox(‘name’, ‘value’, true)}}
Radio button {{Form::radio(‘name’, ‘value’)}}
Select avec les options {{Form::select('size', ['L' => 'Large', 'S' => 'Small'],
‘value’=>’texte_affiche’);}}
Bouton submit {{Form::submit('Click Me!');}}

Date {{Form::date(‘name’, /Carbon/Carbon/now())}}

NB : nécessite le package "laravelcollective/html":"5.6.*" dans le fichier Json ainsi que la définition des façades adéquates
Il existe d’autre composants pour créer des formulaires laravel-form-builder

https://laravelcollective.com/docs/master/html
Entrées et Formulaires:
Validation de Formulaires
Le contrôleur permet de valider les valeurs fournies dans un formulaire

1. Définition des règles de validation d’un formulaire

Méthode 1 : Directement dans le contrôleur à l’aide de la méthode validate de la classe Request

Si les valeurs ne sont pas conformes à la validation, l’utilisateur est renvoyé vers le formulaire
Entrées et Formulaires:
Validation de Formulaires
Le contrôleur permet de valider les valeurs fournies dans un formulaire

Méthode 2 : Définir une requête spécifique à votre formulaire et y inclure les règles de validation dans
la méthode rules (){}
Exécuter la commande php artisan make:request FormRequest
Aller dans le répertoire /app/http/requests
Dans le return , spécifier pour chaque élément de
formulaire les valeurs requises sous forme d’un ta
bleau associatif

return [
'texte' => 'required|max:250'
];

https://laravel.com/docs/5.6/validation
Entrées et Formulaires:
Validation de Formulaires
Le contrôleur permet de valider les valeurs fournies dans un formulaire

2. Affichage des erreurs dans le formulaire

Si le formulaire n’est pas valide, un objet errors est créé et retourné vers le formulaire.
Il contient toutes les erreurs de validation de votre formulaire
Pour les afficher dans le code du formulaire ajouter

Pour afficher séparément les erreurs liés à chaque élément du formulaire


Validation de formulaires

Travail à réaliser

1- Ajouter la validation des données de votre formulaire en passant par la 1 ère


méthode puis la 2nde méthode

Vous aimerez peut-être aussi