Laravel Formation Et Exercices [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

Table des matières

APPRENDRE LES BASES DU FRAMEWORK LARAVEL.............................................................................3 DIRECTORY STRUCTURE.........................................................................................................................3 APPLICATION SIMPLE RESTAURANT AVEC LARAVEL.............................................................................5 CREATION DU PROJET........................................................................................................................5 Création du projet et téléchargement des données auth.............................................................5 Création des models et migrations................................................................................................5 Création des controller..................................................................................................................6 Création des Routes (resources)....................................................................................................6 CATEGORY SECTION...........................................................................................................................7 Ajouter une catégorie....................................................................................................................7 Afficher la liste des catégories créée.............................................................................................8 Modifier les catégories :..............................................................................................................10 Supprimer category.....................................................................................................................11 FOOD SECTION.................................................................................................................................12 Form for food...............................................................................................................................12 Store the food information..........................................................................................................15 List of food...................................................................................................................................16 Paginate.......................................................................................................................................17 Relation 1 à n...............................................................................................................................18 Edit Food......................................................................................................................................18 Delete food information..............................................................................................................21 Afficher les liens seulement quand on se connecte....................................................................22 Cacher le bouton register sur la page d’accueil...........................................................................22 Ajouter des middlewares..............................................................................................................22 FRONTEND.......................................................................................................................................23 APPLICATION SIMPLE RESTAURANT AVEC LARAVEL...........................................................................24 CREATION DU PROJET......................................................................................................................24 Création du projet et téléchargement des données auth...........................................................24 Création des models et migrations..............................................................................................24 Création des controller................................................................................................................25 Création des Routes (resources)..................................................................................................25 CATEGORY SECTION.........................................................................................................................25 Ajouter une catégorie..................................................................................................................25 Scription auto-close alert.............................................................................................................26 Afficher la liste des catégories créée...........................................................................................27 1

Modifier les catégories :..............................................................................................................29 Supprimer category.....................................................................................................................31 SUBCATEGORY SECTION..................................................................................................................32 Migration et model......................................................................................................................32 Create Subcategory......................................................................................................................32 Validate and Store the Subcategory information.......................................................................34 List of Subcategory.......................................................................................................................34 Update Subcategory....................................................................................................................36 Delete subcategory......................................................................................................................38 Afficher les liens seulement quand on se connecte....................................................................38 Cacher le bouton register sur la page d’accueil...........................................................................38 Ajouter des middlewares..............................................................................................................38 MODIFIER PAGE ACCUEIL................................................................................................................39 PRODUCT SECTION..........................................................................................................................40 Migration et model......................................................................................................................40 Create Product.............................................................................................................................40 Summernote JS et CSS.................................................................................................................43 Validate form...............................................................................................................................43 Ajax dependent dropdown..........................................................................................................44 Store product...............................................................................................................................44 List of product with Datatable.....................................................................................................45 Update Product............................................................................................................................47 Delete Product.............................................................................................................................49 MIGRATION OF USERS TABLE & SEEDER.........................................................................................49 Migration.....................................................................................................................................49

2

APPRENDRE LES BASES DU FRAMEWORK LARAVEL DIRECTORY STRUCTURE Le répertoire des applications Le répertoire de l'application contient le code principal de votre application. Nous explorerons bientôt ce répertoire plus en détail ; cependant, presque toutes les classes de votre application seront dans ce répertoire. Le répertoire Bootstrap Le répertoire bootstrap contient le fichier app.php qui amorce le framework. Ce répertoire contient également un répertoire de cache qui contient des fichiers générés par le framework pour l'optimisation des performances, tels que les fichiers de cache d'itinéraire et de services. Le répertoire de configuration Le répertoire de configuration, comme son nom l'indique, contient tous les fichiers de configuration de votre application. C'est une excellente idée de lire tous ces fichiers et de vous familiariser avec toutes les options qui s'offrent à vous. Le répertoire de base de données Le répertoire de base de données contient vos migrations de base de données, vos fabriques de modèles et vos semences. Si vous le souhaitez, vous pouvez également utiliser ce répertoire pour contenir une base de données SQLite. L'annuaire public Le répertoire public contient le fichier index.php, qui est le point d'entrée de toutes les requêtes entrant dans votre application et configure le chargement automatique. Ce répertoire héberge également vos ressources telles que les images, JavaScript et CSS. Le répertoire des ressources Le répertoire de ressources contient vos vues ainsi que vos actifs bruts non compilés tels que LESS, SASS ou JavaScript. Ce répertoire contient également tous vos fichiers de langue. Le répertoire des routes Le répertoire routes contient toutes les définitions d'itinéraire pour votre application. Par défaut, plusieurs fichiers de routes sont inclus avec Laravel: web.php, api.php, console.php et channels.php. Le fichier web.php contient les itinéraires que RouteServiceProvider place dans le groupe middleware Web, qui fournit l'état de session, la protection CSRF et le cryptage des cookies. Si votre application n'offre pas d'API RESTful sans état, toutes vos routes seront probablement définies dans le fichier web.php. Le fichier api.php contient les routes que RouteServiceProvider place dans le groupe de middleware api, ce qui permet de limiter le débit. Ces routes sont destinées à être sans état, de sorte que les requêtes entrant dans l'application via ces routes sont destinées à être authentifiées via des jetons et n'auront pas accès à l'état de session. 3

Le fichier console.php est l'endroit où vous pouvez définir toutes vos commandes de console basées sur Closure. Chaque fermeture est liée à une instance de commande permettant une approche simple pour interagir avec les méthodes IO de chaque commande. Même si ce fichier ne définit pas les routes HTTP, il définit des points d'entrée (routes) basés sur la console dans votre application. Le fichier channels.php est l'endroit où vous pouvez enregistrer tous les canaux de diffusion d'événements pris en charge par votre application. Le répertoire de stockage Le répertoire de stockage contient vos modèles Blade compilés, des sessions basées sur des fichiers, des caches de fichiers et d'autres fichiers générés par le framework. Ce répertoire est séparé en répertoires d'applications, d'infrastructure et de journaux. Le répertoire de l'application peut être utilisé pour stocker tous les fichiers générés par votre application. Le répertoire du framework est utilisé pour stocker les fichiers et les caches générés par le framework. Enfin, le répertoire logs contient les fichiers journaux de votre application. Le répertoire storage / app / public peut être utilisé pour stocker des fichiers générés par l'utilisateur, tels que des avatars de profil, qui devraient être accessibles au public. Vous devez créer un lien symbolique sur public / storage qui pointe vers ce répertoire. Vous pouvez créer le lien en utilisant la commande php artisan storage: link. Le répertoire des tests Le répertoire des tests contient vos tests automatisés. Un exemple de test PHPUnit est fourni prêt à l'emploi. Chaque classe de test doit être suffixée du mot Test. Vous pouvez exécuter vos tests en utilisant les commandes phpunit ou php vendor / bin / phpunit. Le répertoire des fournisseurs Le répertoire du fournisseur contient vos dépendances de Composer.

4

APPLICATION SIMPLE RESTAURANT AVEC LARAVEL. CREATION DU PROJET Création du projet et téléchargement des données auth >composer create-project --prefer-dist laravel/laravel PSL >cd PSL > composer require laravel/ui >php artisan ui bootstrap –-auth >npm install >npm run dev

>php artisan ui bootstrap --auth

Création des models et migrations > php artisan make:model Employe -m > php artisan make:model Service -m Employe Migration >database>migrations>employes_tables public function up()     {         Schema::create('employes', function (Blueprint $table) {             $table->id();             $table->integer('matricule');             $table->string('nom');             $table->string('prenoms');             $table->string('sexe');             $table->date('naissance');             $table->integer('contact');             $table->string('commentaire');             $table->timestamps();         });     }

Service Migration >database>migrations>services_tables 5

public function up()     {         Schema::create('services', function (Blueprint $table) {             $table->id();             $table->string('nom');             $table->timestamps();         });     }

Fillable Employe >app>Employe class Employe extends Model {     protected $fillable =['matricule','nom','prenoms','sexe','naissance','cont act','commentaire']; }

Fillable Service >app>Service class Service extends Model {     protected $fillable = ['name']; }

Création des controller Employe controller > php artisan make:controller EmployeController -r Service controller > php artisan make:controller ServiceController -r

Création des Routes (resources) Employe route && service route Route::resource('employe','EmployeController'); Route::resource('service','ServiceController');

6

CATEGORY SECTION Ajouter une catégorie - Créer le fichier create.blade.php dans category Code : @extends('layouts.app') @section('content')

                          @if(Session::has('message'))                              {{Session::get('message')}}                          @endif                              {{ __("Gestionnaire des services: Cré ation d'un nouveau service") }}                                                          @csrf                                                      Entrer le nom du service                                                                                                            Description                                                                                                            Enregistrer                                                                            7

             

@endsection

- Modifier les fonctions create et strore dans CategoryController Code : public function create()     {         return view ('service.create');     }

    public function store(Request $request)     {         Service::create([             'nom'=>$request->get('nom'),             'description'=>$request->get('description')         ]);         return redirect()->back()->with('message','Nouveau service ajouté avec  succès');     }

Afficher la liste des catégories créée - Creé un fichier index.blade.php dans le dossier category Code : @extends('layouts.app') @section('content')

                          @if(Session::has('message'))                              {{Session::get('message')}}                          @endif                              {{ __('Liste de service de PSL') } } 8

                                                                                                                                           #                             Titre du service                             Description                             Modifier                             Supprimer                                                                               @if(count($services)>0)                         @foreach($services as $key=>$service)                                                                                   {{$key+1}}                             {{$service->nom}}                             {{$service->description}}                             Modifier                                                                                                   @csrf                                     {{method_field('DELETE')}}                                     supprimer                                                                                                                                             @endforeach                         @endif                                                                 

@endsection

- Modifier la fonction index dans CategoryController 9

Code : public function index()     {         $services = Service::latest()->get();         return view ('service.index',compact('services'));     }

Modifier les catégories : - Créer un fichier edit.blade.php dans category : Code : @extends('layouts.app') @section('content')

                                                    Food Category                                                               @csrf                         {{method_field('PUT')}}                                                                               Update Food Caterory                                                                                                   Name                                                                                                                                            Update                                                                                                             10

                                                                

@endsection

- Modifier les function edit et update dans CategoryController.php Code : public function edit($id)     {         $category = Category::find($id);         return view('category.edit',compact('category'));     }      public function update(Request $request, $id)     {         $category = Category::find($id);         $category->name = $request->get('name');         $category->save();         return redirect()->route('category.index')->with(             'message','Category updated'         );     }

Supprimer category - Modifier code button supprimer           @csrf      {{method_field('DELETE')}}      Delete       

- Modifier function Destroy dans CategoryController.php public function destroy($id)     {         $category = Category::find($id); 11

        $category->delete();         return redirect()->route('category.index')->with(             'message','Category deleted'         );     }

FOOD SECTION Form for food -

Resource route

Code: web.php Route::resource('food','FoodController');

-

Function retour vers la Page create

Code: FoodController.php public function create()     {         return view('food.create');     }

-

Formulaire Page create

Code: food>create.blade.php

 @csrf     Name  

                  Description                                    Price                                   Category           12

           Select category           @foreach(App\Category::all() as $category)             {{$category->name}}           @endforeach                                      Image         Submit  

-

Validation of the form

Code : FoodController.php public function store(Request $request)     {         $this->validate($request,[             'name'=>'required',             'description'=>'required',             'price'=>'required|integer',             'category'=>'required',             'image'=>'required|mimes:png,jpg,jpeg'         ]);     }

-

Ajouter vérification validation formulaire et ajouter enctype pour l’image

Code : food>create.blade.php                                              @csrf                                                      Name                                                              @error('name')                                                                              {{$message}}                                                                      @enderror                                                                               Description 13

                                                                                          @error('description')                                                                              {{$message}}                                                                      @enderror                                                                               Price                                                              @error('price')                                                                              {{$message}}                                                                      @enderror                                                                               Category                                                              @error('category')                                                                              {{$message}}                                                                      @enderror                                 Select category                                 @foreach(App\Category::all() as $category)                                 {{$category>name}}                                 @endforeach                                                                                                            Image                                                              @error('image')                                      14

                                        {{$message}}                                                                      @enderror                                                  

Store the food information -

Modifier la function store pour enregistrer les informations dans la BD

Code : FoodController.php public function store(Request $request)     {         $this->validate($request,[             'name'=>'required',             'description'=>'required',             'price'=>'required|integer',             'category'=>'required',             'image'=>'required|mimes:png,jpg,jpeg,PNG,JPG,JPEG'         ]);         $image = $request->file('image');         $name = time().'.'.$image->getClientOriginalExtension();         $destinationPath = public_path('/images');         $image->move($destinationPath,$name);         Food::create([             'name'=>$request->get('name'),             'description'=>$request->get('description'),             'price'=>$request->get('price'),             'category_id'=>$request->get('category'),             'image'=>$name                      ]);         return redirect()->back()->with('message','Food created');     }

-

Modifier la class Food pour ajouter l’image oublié au départ

Code : app>Food.php class Food extends Model {     protected $fillable = ['name','description','price','category_id','image'] ; }

List of food -

Modifier la function index de FoodController et créer la page index.blade.php dans le dossier food 15

Code : FoodController.php public function index()     {         $foods = Food::latest()->get();         return view('food.index',compact('foods'));     }

Copier-coller le code de categroy>index.blade.php dans food>index.blade.php et faire les modifications mineures. -

Food list

Code : food>index.blade.php @extends('layouts.app') @section('content')

                          @if(Session::has('message'))                                      

{{Session::get('message')}}

                             @endif                              Food List                                                                                                                         ID                             Image                             Name                             Description                             Price                             Category                             Edit                             Delete                                                                               @if(count($foods)>0)                         @foreach($foods as $key=>$food)                                                                                   {{$key+1}}                                                          {{$food->name}} 16

                            {{$food->description}}                             {{$food->price}}                             {{$food->category}}                                                              Edit                                                                                                                                @csrf                                     {{method_field('DELETE')}}                                     Delete                                                                                                                                                                                                              @endforeach                         @else                         No category to display                         @endif                                                                                              

@endsection

Paginate -

Modifier la function index de FoodController pour ajouter paginate

Code : FoodController public function index()     {         $foods = Food::latest()->paginate(5);         return view('food.index',compact('foods'));     }

-

Ajouter {{$food->links()}} à la fin de table

{{$foods->links()}} 17

Relation 1 à n -

Modifier la Class food afin d’afficher le nom de la category à la place de l’ID dans Food list

Code : App>food.php