Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Comprendre Laravel

Par Allassane Kader KAMARA Publié le 23/05/2018 à 05:07:08 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Objectif : après la lecture de cet article vous aurez acquis les compétances suivantes : Connaître laravel, c’est quoi un framework et créer votre prmière application web avec laravel.

Introduction

Si vous avez déjà développé au moins une application web avec PHP qui est un langage de programmation riche et facile à apprendre lorsqu’on veut se lancer dans le développement d’application web, et que vous souhaiter approfondire encore votre connaissance dans ce domaine mais vous ne souhaiter pas toujours taper plusieurs lignes de code pour une fonctionnalité, alors je vous souhaite les bienvenues. Par exemple pour gérer des pages de façon dynamique. Une fois qu'on a créé une fonction ou une classe pour réaliser une tâche il est naturel d'aller la chercher lorsque la même situation se présente. Puisque c'est une bibliothèque personnelle et qu'on est seul maître à bord il faut évidemment la mettre à jour lorsque c'est nécessaire, et c'est parfois fastidieux. C'est pourquoi je vais vous parler du framework Laravel qui est un environemment de travail PHP avec tout les outils déjà prêt à votre disposition pour un dévéloppement plus rapide et encore plus pratique et je vais vous faire aussi part de ses avantages.

A la fin de cet article, vous saurai ce que c’est que le Framework laravel et vous vous familiariserez avec le Model View Controller(MVC).

Un framework

Un Framework ou cadre de travail en français permet d’aller encore beaucoup plus vite dans le développement. Son avantage est de permettre de gagner beaucoup plus de temps, ainsi vous n’aurai plus à passer du temps sur ce qui a déjà été fait par d’autre personnes plus compétant et dans la plus part des cas validé par d’autres utilisateurs, avec un Framework tout est mis à votre disposition afin de rendre votre développement plus facile et rapide. En ce qui concerne la Framework Laravel, il existe une grande communauté qui vous aide à chaque moment que vous avez des difficultés dans votre code.

Alors quand je parle d’outils, avec Laravel, vous y trouverez dès la création du projet un système de routage dans le fichier « web.php » à partir de la version 5.4, sinon pour les version antérieurs, c'est à dire le 5.3 vous trouverez le fichier des routes dans le "route.php", un créateur de requête SQL, un système d’envoi d’email, un système d’autorisation une gestion de session, un système de migration de base de données un système d’authentification pour la connexion des utilisateurs et encore d’autre système que je n’ai pas cité mais que vous aurez l’occasion de découvrir ici.

Tout ces outils seront à votre disposition afin de vous faciliter la tâche.

Laravel en gros

C’est un Framework écrit en PHP respectant le principe Model View Controller(MVC) et entièrement développé en programmation orienté objet.

  • Le Model contient les données à afficher

  • La vue (View) contient la présentation de l’interface graphique

  • Enfin le Controller contient la logique concernant les actions effectué par l’utilisateur

    • Lorsque le client va envoyer sa requête, le Controller va contrôler les données de la requête et les passe au Modèle, il gère aussi les erreurs, et communique les résultats du modèle à la vue, puis renvoie le travail de la Vue à l'utilisateur.

    • Le model va traiter la demande de l'utilisateur. Pour cela, il a aussi accès aux données en lecture et en écriture à la base de données;

    • La vue quant à elle formate les résultats du traitement retournés par le model pour les pour les présenter à l'utilisateur

Composer

Alors avant de passer à la création de votre projet, vous devez preparer votre machine. Pour cela, vous allez tout d’abord installer composer. Il faut savoir que composer est un gestionnaire de dépendance libre écrit en PHP, et permet à ses utilisateurs de déclarer et d’installer les bibliothèques dont le projet a besoins. Vous en aurez besoins tout au long de votre projet à chaque fois que vous aurai besoin d’installer une bibliothèque.

Pour installer une bibliothèque, vous pouvez soit l’installer en ligne de commande qui commande ou en vous rendant dans le fichier « composer.json » et faire un #composer update par la suite

Alors pour installer composer sur windows, vous devez vous rendre sur le site officiel de composer « getcomposer.org » et télécharger l’exécutable et vous l’installez.

Ou en ligne de commande si vous avez un mac :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Supposons qu’on veut installer la bibliothèque « laravelcollective » (c’est une bibliothèque qui va vous permettre de créer des formulaires) en ligne de commande, grâce à composer :

Où dans le fichier composer.json

Vous insérer cette ligne soulignée en jaune ensuite vous exécutez la commande #composer update pour qu’il prenne en compte les changements. Mais bien avant cela, n'oubliez pas d'ajouter le chemin d'accès de PHP à votre variable d'environnement sinon votre invité de commande vous dira que "php n'est pas réconnu comme commande interne". Vous remplacerez la version du laravelcollective selon votre version de laravel.

Creation projet

Pour créer un projet laravel, plusieurs choix se proposent à vous, vous pouvez le faire en ligne de commande ou vous pouvez directement le faire avec laragon qui est un environnement de développement web local tout comme WAMP server ou XAMP mais il a une différence particulière. Avec laragon, vous avez la possibilité de créer en un clic des projets avec des CMS comme WordPress, Joomla, Prestashop et aussi créer des applications avec des Framework déjà prêt à être déployer.

Création en ligne de commande

Pour créer un projet laravel en ligne de commande, vous n’avez qu’à lancer votre inviter de commande, ensuite vous vous rendez dans le sous dossier www de l’environnement de développement web de votre choix ou que vous avez l’habitude d’utiliser. En ce qui me concerne j’utilise laragon.

Voici comment cela se présente, vous pouvez en faire de même si vous utiliser WAMP Server ou XAMP :

Ensuite taper cette commande :

#composer create-project –prefer-dist laravel/laravel nom_projet

supinfo sera ici le nom de notre projet

Création avec la console de laragon

Pour créer un projet avec laragon devient un jeu d’enfant. Pour réaliser cela, il faut tout d’abord installer laragon pour celui qui n’en possède pas, vous n’avez qu’à vous rendre sur le site officiel de laragon pour le télécharger et l’installer, https://laragon.org/download/.

Ensuite lancer laragon :

Faites un clic droit et dans le sous menu de « créer un site web rapidement », sélectionnez « Laravel ». Il va vous générer automatiquement tout ce dont vous avez besoins pour votre travail, cela peut prendre quelque temps, vous devez juste patientez jusqu’à ce qu’il vous affiche un message de succès.

Après la création, voici comment se présente l’arborescence de votre projet.

Les routes

Permet de configurer nos URL. Dans le dossier routes vous avez un fichier appelé web.php, je mettrai cela au claire dans un TP à la suite de l’article.

Les models

Les models nous permettront de communiquer directement avec les tables de notre base de données. C’est la représentation objet de chacune de nos tables, cette action qu’on effectue ici s’appelle du mapping objetct-relationnel (ORM). Avec Laravel, vous avez Eloquent qui se charge de cela avec des fonctionnalités intéressantes. Une simple lecture de code vous permet déjà de comprendre ce qu’il fait.

Pour créer un Model, exécutez cette commande : #php artisan make:model Nom_model

Les models que vous créer sont dans le dossier app.

les Controllers

C’est le Controller qui sera chargé ici de réceptionner les requêtes et de donner une réponse.

Pour créer un controller, lancer toujours votre invité de commande, et tapez cette commande : #php artisan make:controller Nom_controller.

Les Controllers que vous créer se trouvent dans app/Http/Controllers

La migration

Les migrations permettent de créer et de gérer vos table de base de donnée, c’est ici que vous pouvez apporter des modifications à votre table, il est conseiller que lorsque vous voulez apportez une modification à votre table où votre base de donnée, d’utiliser la migration et non directement dans votre phpmyadmin.

Alors pour créer une table, avec votre invité de commande, saisissez cette commande : #php artisan make:migration nom_table.. Si vous ajouter par exemple un nouvel attribut à votre table, il vous suffit juste tapez la commande #php artisan migrate:rollback pour qu'il prenne en compte la modification que vous venez d'apporter.

Vos tables que vous avez créer se trouvent dans database/migrations

Les middlewares

C’est une fonction qui s’interpose entre l’appel de la route et l’exécution du code qui est appelé par cette route. Ça sert à automatiser certaines tâches, c’est lui qui permettra de savoir si un utilisateur est connecter où pas sans avoir besoin d’écrire du code explicite.

Ici dans le HomeController.php, le middleware auth est déclaré dans son constructeur. Ce qui signifie que toutes les méthodes de ce controller qui seront appelées, comme dans la méthode index(), le middleware auth sera exécuté avant.

Je ne vais pas détailler tous les outils que le Framework laravel nous offre, mais j’ai essayé de mettre au clair certain que vous allez utiliser quotidiennement de votre projet.

Cas pratique

Pour mettre en pratique tout ce que nous avons vu jusqu'à maintenant, nous allons créer ensemble une petite application afin de résumer tout ce qui a été dit.

Lancement de notre page

Notre application consiste à faire un test d’ajout, de modification et de suppression. Communément appeler du CRUD. Souvenez vous de notre application « supinfo »que nous avions créé, nous allons l’utiliser pour effectuer nos différents test. Alors pour voir à quoi ressemble notre application, lancer cette commande :

#php artisan serve

Ensuite vous n’avez qu'à copier coller ce lien en jaune dans votre navigateur. sinon si vous utilisez laragon comme moi c'est simple, ecrivez tout simplement supinfo.dev dans votre navigateur vous aurez votre page web devant vous.

Voici comment s’affiche notre page pour la toute première fois. Félicitation vous venez de lancer votre première page laravel !

Création de base de données et des tables(migration)

Nous allons créer notre base de données, pour cela allez y tout d’abord dans le fichier «.env » pour renseigner le nom de votre base de donnée que vous avez créer dans phpmyadmin et le nom d’utilisateur mysql ainsi que votre mot de passe, laisser le champs DB_PASSWORD vide si votre gestionnaire de base de donnée n'a pas de mot de passe. Renseigner les champs comme indiquer dans le schéma ci-dessous :

Pour créer par exemple la table « school », exécuter la commande

#php artisan make:migration create_school_table

La table a été créée avec succès. Rendez vous dans votre dossier database/migrations pour voir votre table.

Ajouter les champs "nom" et "description" dans votre table comme indiqué dans l’mage,

Création de notre Model

Ensuite nous allons créer notre model. Exécuter la commande :

#php artisan make:model School

Le Model a été créé avec succès. Rendez vous dans le dossier app

Et dans votre Model que vous venez de créer, ajouter cette ligne en jaune sur l’image, si vous remarquez bien, c’est les attributs qu’on avais ajouté dans la table que nous avions créer qui sont renseigner ici.

Nous avons créé notre table, il reste maintenant à l’enregistrer dans notre base de données, nous allons donc faire la migration. Pour cela, dans votre invité de commande exécuter la commande suivante :

#php artisan migrate

Le message qui s’affiche indique que la migration de notre table a été effectuée avec succès. Si vous utiliser wamp seveur ou xamp, rendez vous dans phpmyadmin pour voir les tables qui on été créer dans votre base de données.

Vous pouvez le constatez ici comme moi dans votre gestionnaire de base de données. « supinfotest » représente notre base de données et « schools » est la table que nous venons de créer.

Création du Controller

Nous allons maintenant créer notre Controller, le Controller s’appellera schoolController. Rendez-vous dans votre invité de commande et lancer la commande : #php artisan make:controller SchoolController --resource.

--resource va permettre de créer automatiquement les méthodes dont on aura besoins dans notre projet. Ces méthodes sont entre autre : index, create, store, show, update et destroy.

Le Controller a été créé avec succès. Ensuite dans votre route qui se trouve dans le fichier routes/web.php, ajouter cette ligne :

Route::resource('schools','SchoolController');

Ce qui signifie que l’url http://127.0.0.1/schools mène aux méthodes index(), create(), store(), edit(), update(), show() et destroy() du Controller SchoolController.

Et dans app\Http\SchoolController.php vos fonctions doivent être ainsi :

<?phpnamespace App\Http\Controllers;

use App\Http\Requests\SchoolRequest;
use App\School;
use Illuminate\Http\Request;

class SchoolController extends Controller
{
    /**     
        * Display a listing of the resource.
        *     
        * 
     @return \Illuminate\Http\Response     
      */
  public function index()
    {
        $schools = School::all();
        return view('schools.index',compact('schools'));
    }

    /**     
          * Show the form for creating a new resource.     
          *     
          * @return \Illuminate\Http\Response     
          */
public function create()
    {
       return view('schools.create');
    }

    /**     
       * Store a newly created resource in storage.     
       *     
       * @param  \Illuminate\Http\Request  $request     
       * @return \Illuminate\Http\Response     
       */
   public function store(SchoolRequest $request)
    {
        School::create($request->all());
        return redirect()->route('schools.index')->with('message','ajouter avec succes');
    }

    /**     
       * Display the specified resource.     
       *     
       * @param  int  $id     
       * @return \Illuminate\Http\Response     
       */
  public function show($id)
    {
        //
    }

    /**    
       * Show the form for editing the specified resource.     
       *     
       * @param  int  $id     
       * @return \Illuminate\Http\Response     
       */
  public function edit(School $school)
    {
        return view('schools.edit',compact('school'));
    }

    /**     
       * Update the specified resource in storage.     
       *     
       * @param  \Illuminate\Http\Request  $request     
       * @param  int  $id     
       * @return \Illuminate\Http\Response     
       */
 public function update(SchoolRequest $request, School $school)
    {
        $school->update($request->all());
        return redirect()->route('schools.index')->with('message','modifier avec succes');
    }

    /**     
       * Remove the specified resource from storage.     
       *     
       * @param  int  $id     
       * @return \Illuminate\Http\Response     
       */
 public function destroy(School $school)
    {
        $school->delete();
        return redirect()->route('schools.index')->with('message','supprimer avec succes');
    }
}

la fonction index()

public function index()

{

    $schools = School::all();  

    return view('schools.index',compact('schools'));

}

La variable $schools permet de récupérer toutes les données dans le model School, return view() indique que lorsque je suis dans la page d’index tu m’affiches toutes les écoles contenue dans la variable $school.

la fonction create()

C'est cette methode qui vous permettra d'ajouter des données à partire de votre formulaire.

public function create()

{

    return view('schools.create');

}

Me redirige vers la vue create.blade.php qui se trouve dans le dossier schools.

la fonction store()

C’est cette fonction qui vous permettra de faire le stockage

public function store(SchoolRequest $request)

{

    School::create($request->all());

    return redirect()->route('schools.index')->with('message','ajouter avec succès');

}

Modifier votre fonction store en ajoutant SchoolRequest, ici nous faisons appelle la classe ScoolRequest qu'il faudra créer par la suite, je vous montrerai comment créer cette classe et comment indiquez à partire celle-ci que des champs sont obligatoires.

la fonction edit()

public function edit(School $school)

{

    return view('schools.edit',compact('school'));

}

C’est cette fonction dans le Controller qui nous permettra de modifier nos informations, ajoutez le model School et la variable $school comme initialisation de votre fonction, la methode edit() nous permettra de modifier tout le contenu de la variable $school.

la fonction update()

Votre fonction update doit être ainsi :

public function update(SchoolRequest $request, School $school)

{

    $school->update($request->all());

    return redirect()->route('schools.index')->with('message','modifier avec succes');

}

Cette méthode vous permettra de mettre à jours vos modifications.

la fonction destroy()

Votre fonction destroy doit être ainsi :

public function destroy(School $school)

{

    $school->delete();

    return redirect()->route('schools.index')->with('message','supprimer avec succès');

}

La fonction destroy() permettra de faire les suppressions de ce que vous avez ajouter.

NB : Vous pouvez consulter la liste de vos routes en exécutant la commande #php artisan route:list. Si vous exécuter cette commande que vous ne voyez pas toutes ces routes sur l'image, c’est n’est pas un problème, exécuter la commande #php artisan make:auth et réessayer de nouveau. Dans le nom des routes, vous constater que les "Names" commencent par « schools. », c’est parce que dans notre routes qui se trouve dans le fichier routes/web.php je l'ai déclarer afin qu'il mène vers les méthodes qu'on viens de citer.

Vous avez la liste de tous vos routes ainsi que les différentes méthodes.

Creation des vues

Nous allons créer nos différentes vues mais bien avant il faut installer la bibliothèque laravel collective dont j’avais parlé. Il nous permettra de créer nos formulaires, pour cela exécuter la commande #composer require ‘’laravelcollective/html’’, ensuite allez-y dans votre fichier config/app.php et ajouter cela dans le tableau providers :

Collective\Html\HtmlServiceProvider::class,

Et ensuite ajouter ceci dans le tableau aliases en bas :

'Form' => Collective\Html\FormFacade::class,

'Html' => Collective\Html\HtmlFacade::class,

Nous sommes maintenant prêts pour créer nos formulaires et ajouter des données dans notre base de données.

index.blade.php

Dans resources/views/schools pour afficher toutes les écoles qu'on va ajouter

@extends('layouts.app')
@section('content')
<div class="container">
     <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">School</div>

                    <div class="card-body">
                        <table class="table">
                            <tr>
                                <th>Nom</th>
                                <th>Action</th>
                            </tr>
                                @foreach($schools as $school)
                            <tr>
                                <td>{{$school->nom}}</td>
                                <td>
                                    {!! Form::open(array('route'=>['schools.destroy',$school->id],'method'=>'DELETE')) !!}
                                    {{link_to_route('schools.edit','Modifer',[$school->id],['class'=>'btn btn-primary'])}}
                                    |
                                    {!! Form::button('Supprimer',['class'=>'btn btn-danger','type'=>'submit']) !!}
                                </td>
                            </tr>
                                @endforeach
                        </table>
                    </div>
                 </div>
            {{link_to_route('schools.create','Ajouter nouvel ecole','null',null,['class'=>'btn btn-success'])}}
            </div>
           </div>
        </div>
@endsection

create.blade.php

Ici se présente le formulaire qui vous permettra de faire les ajouts. votre fichier doit se trouver dans resources/views/create.blade.php

@extends('layouts.app')
@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">ajout school</div>

                      <div class="card-body">

                           {!! Form::open(array('route'=>'schools.store')) !!}
                            <div class="form-group">
                                {!! Form::label('nom','Entrez nom école') !!}
                                {!! Form::text('nom',null,['class'=>'form-control']) !!}
                            </div>

                        <div class="form-group">
                                {!! Form::label('description','décrivez votre ecole') !!}
                                {!! Form::textarea('description',null,['class'=>'form-control']) !!}
                         </div>

                        <div class="form-group">
                                {!! Form::button('Envoyer',['type'=>'submit', 'class'=>'btn btn-primary']) !!}
                         </div>
                        {!! Form::close() !!}
                    </div>
            </div>
        </div>
    </div>
</div>
@endsection

edit.blade.php

Cette vue permettra de modifier les données qui ont été ajouter, resources/views/edit.blade.php

@extends('layouts.app')
@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">modifier school</div>

                    <div class="card-body">

                        {!! Form::model($school,array('route'=>['schools.update',$school->id], 'method'=>'PUT')) !!}
                        <div class="form-group">
                            {!! Form::label('nom','Entrez nom école') !!}
                            {!! Form::text('nom',null,['class'=>'form-control']) !!}
                        </div>

                        <div class="form-group">
                            {!! Form::label('description','décrivez votre ecole') !!}
                            {!! Form::textarea('description',null,['class'=>'form-control']) !!}
                        </div>

                    <div class="form-group">
                            {!! Form::button('Modifier',['type'=>'submit', 'class'=>'btn btn-primary']) !!}
                        </div>
                        {!! Form::close() !!}
                    </div>
                </div>
        </div>
      </div>
</div>
@endsection

Pour indiquer à vos utilisateurs que des champs sont requis et qu’ils doivent obligatoirement le remplir, avec laravel il est encore plus simple d’effectuer cela. Alors nous allons créer une classe appelée SchoolRequest comme je l'ai préciser lorsque je parlais de la methode store(). Dans votre invité de commande, saisissez #php artisan make:request SchoolRequest

Et modifier votre classe ainsi, on a indiqué ici que les champs "nom" et "description" seront requis dans le formulaire. Si par exemple l'utilisateur laisse une case vide, il aura un méssage d'erreur comme quoi tous les champs sont requis.

Affichage des pages

Si vous avez bien suivie les étapes, normalement vous devez avoir ces résultats :

la page de creation

la page d'index

la page de modification

Conclusion

En définitif ce qu’il faut retenir de laravel, c’est que c'est un Framework php qui vous simplifie la tâche, pour ce faire, vous devez avoir une base de connaissance en php et la suite vous sera encore plus simple.

Code source : n’hésitez surtout pas à me contacter par email afin que je mette à votre disposition le code source : 224184@supinfo.com et aussi pour toutes vos questionss si vous n'avez pas compris quelque chose ou si quelque chose ne marche pas.

Source :

https://laravel.com/

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels