Introduction à Laravel
Mohammed TADLAOUI
M1GL/SIC
Département d’informatique
Université de Tlemcen
Installation de Laravel
 installer composer ou laragon
 $composer global require "laravel/installer"
 $laravel new shop
structure laravel
 les controllers : lesite/app/http/controllers
 modèle lesite/app
 views : lesite/ressources/views
 routage : lesite/routes/web.php
 fichiers images, js, css : lesite/public
 config : lesite/.env
lancer laravel
 $php artisan serve
 lien du site est généré
routes
 fichier web.php
 Route::get('/', function () {
 return view('welcome');
 //echo "ce site est";
 });
 utilisation d'une fonction anonyme ou d'un controlleurs
 le / est routé vers la vue welcome
 mettre à jour la vue
 rajouter une nouvelle vue
routes dynamiques
 Route::get('/contact/{name}', function ($name) {
 echo"contact name:".$name;
 });
 //http://127.0.0.1:8000/contact/mohammed/
 Route::get('/contact/{name}/id/{id}', function ($name, $id) {
 echo"contact name:".$name;
 echo"<br> contact id:".$id;
 });
 http://127.0.0.1:8000/contact/mohammed/id/45
validation des routes
 Route::get('/contact/{name}/id/{id}', function ($name, $id) {
 echo"contact name:".$name;
 echo"<br> contact id:".$id;
 })->where(['name' => '[a-zA-Z]+', 'id' => '[0-9]+']);
Controllers
 création d'un controller
 $php artisan make:controller ArticleController
 respecter les règles de nommage
 sur ArticleController.php:
 <?php
 namespace AppHttpControllers;
 use IlluminateHttpRequest;
 class ArticleController extends Controller
 {
 public function articles(){
 echo"affichage des articles";
 }
 public function article($id){
 echo"affichage de l'article ".$id;
 }
 }
 sur web.php:
 Route::get('/articles', 'ArticleController@articles');
 Route::get('/article/{id}', 'ArticleController@article');
migration
 création du fichier de migration:
 $php artisan make:migration create_articles_table --create=articles
 Rajouter les champs nécessaires sur le fichier créé sur le répertoire migration
 $table->string('name');
 $table->string('description');
 création de la base de données
 configuration du fichier .env avec les paramètre de connexion à la base
 génération des tables:
 $php artisan migrate
modèle
 création du modèle :
 $php artisan make:model Article
 <?php
 namespace App;
 use IlluminateDatabaseEloquentModel;
 class Article extends Model
 {
 //
 }
Modèle
 rajouter sur le contrôleur :
 use AppArticle;
 public function newArticle(){
 $newArticle = new Article();
 $newArticle->name="stylo";
 $newArticle->description="stylo à bille de haute qualité....";
 $newArticle->save();
 }
 public function listArticles(){

 $articles = Article::all();
 print_r($articles);
 }
Modèle
 rajouter sur sur web.php:
 Route::get('/addarticle/', 'ArticleController@newArticle');
 Route::get('/listarticle/', 'ArticleController@listArticles');
vues
 modifier sur le controlleur la fonction listArticles:
 public function listArticles(){

 $articles = Article::all();
 //print_r($articles);
 return view('articles', ['articles'=>$articles]);
 }
 créer le fichier articles.blade.php:
 <h1>liste des articles</h1>
 <table border=1>
 @foreach($articles as $article)
 <tr>
 <td>{{$article->id}}</td>
 <td>{{$article->name}}</td>
 <td>{{$article->description}}</td>
 </tr>
 @endforeach
 </table>
Authentification
 $composer require laravel/ui
 $php artisan ui:auth
Layouts
 Créer un fichier master.blade.php dans le répertoire ressources/views/layouts
 Mettre dedans le contenu HTML qui ne change pas dans les pages du site
 Un menu | Home | Clients | Fournisseurs | Articles | Contact |
 Rajouter dessus la partie dynamique suivante:
 @yield(‘content’)
 Créer un fichier vue accueil.blade.php dans ressources/views
 Mettre dedans le contenu suivant :
 @extends(‘layouts.master’)
 @Section(‘content’)
 …contenu HTML
 @endsection
Layouts
 Rajouter dans les routes :
 Route::get('accueil', function () {
 return view('accueil');
 });
 Rajouter de la même manière d’autres vues qui héritent du layouts master
(contact …)
 Rajouter dans le fichier master.blade.php des liens vers ces vues via :
 <a href = ‘’{{ url(‘accueil’) }}‘’> accueil</a>
Ajouter un nouvel article
 Dans le controller de l’article rajouter les fonctions
 public function create(){
 return view('article.create');
 }
 public function store(Request $request){
 $article = new Article();
 $article->name = $request->input('nom');
 $article->description = $request->input('description');
 $article->save();
 }
Ajouter un nouvel article
 Rajouter dans les routes :
 Route::get('articles/create', 'ArticleController@create');
 Route::post('articles', 'ArticleController@store');
 Créer un répertoire article dans views
 Créer un fichier create.blade.php dans le répertoire article avec le contenu :
Ajouter un nouvel article
 @extends('layouts.app')
 @Section('content')
 <form action= "{{url('articles')}}" method="POST">
 {{ csrf_field()}}
 <table>
 <tr><td>nom</td><td><input type="text" name="nom"></td></tr>
 <tr><td>description</td><td><textarea name="description"></textarea></td></tr>
 </table>
 <input type="submit" name="" value="Enregistrer">
 </form>
 @endsection
Affichage de la liste des articles
 Dans le controller de l’article rajouter la fonction
 public function index(){
 $listArticle = Article::all();
 return view('article.index', ['articles' => $listArticle]);
 }
 Rajouter à la fin de la fonction store
 return redirect('articles');
 Rajouter dans les routes :
 Route::get('articles', 'ArticleController@index');
 Créer un fichier index.blade.php dans le répertoire article avec le contenu :
Affichage de la liste des articles
 @extends('layouts.app')
 @section('content')
 <a href="{{url('articles/create')}}">Nouvel article</a>
 <table border=1>
 <tr><td>nom</td><td>description</td><td>modifier</td><td>supprimer</td></tr>
 @foreach($articles as $article)
 <tr> <td>{{$article->name}}</td>
 <td>{{$article->description}}</td>
 <td><a href="">modifier</a></td>
 <td><a href="">supprimer</a></td> </tr>
 @endforeach
 </table>
 @endsection
Modifier un article
 Modifier le lien de modification sur index.blade.php avec :
 <td><a href="{{url('articles/'.$article->id.'/edit')}}">modifier</a></td>
 Dans le controller de l’article rajouter les fonctions
 public function edit($id){
 $article = Article::find($id);
 return view('article.edit', ['article'=>$article]);
 }
 public function update(Request $request, $id){
 $article = Article::find($id);
 $article->name = $request->input('nom');
 $article->description = $request->input('description');
 $article->save();
 return redirect('articles');
 }
Modifier un article
 Rajouter dans les routes :
 Route::get('articles/{id}/edit', 'ArticleController@edit');
 Route::put('articles/{id}', 'ArticleController@update');
 Créer un fichier edit.blade.php dans le répertoire article avec le contenu :
Modifier un article
 @extends('layouts.app')
 @section('content')
 <form action= "{{url('articles/'. $article->id)}}" method="POST">
 <input type="hidden" name="_method" value="PUT">
 {{ csrf_field()}}
 <table>
 <tr><td>nom</td><td><input type="text" name="nom" value="{{$article->name}}"></td></tr>
 <tr><td>description</td><td><textarea name="description">
 {{$article->description}}</textarea></td></tr>
 </table>
 <input type="submit" name="" value="Modifier">
 </form>
 @endsection
Supprimer un article
 Modifier le lien de suppression sur index.blade.php avec :
 <td><form action ="{{url('articles/'.$article->id)}}" method="post">
 {{csrf_field()}}
 {{method_field('DELETE')}}
 <button type="submit" >supprimer</button></form></td>
 Dans le controller de l’article rajouter la fonction
 public function destroy($id){
 $article = Article::find($id);
 $article->delete();
 return redirect('articles');
 }
 Rajouter dans les routes
 Route::delete('articles/{id}', 'ArticleController@destroy');
Sources
 https://www.youtube.com/playlist?
list=PLNAMnK22kwLajj5F8T_00t6IRDUpkp0y_

Introduction to web development using Laravel.pptx

  • 1.
    Introduction à Laravel MohammedTADLAOUI M1GL/SIC Département d’informatique Université de Tlemcen
  • 2.
    Installation de Laravel installer composer ou laragon  $composer global require "laravel/installer"  $laravel new shop
  • 3.
    structure laravel  lescontrollers : lesite/app/http/controllers  modèle lesite/app  views : lesite/ressources/views  routage : lesite/routes/web.php  fichiers images, js, css : lesite/public  config : lesite/.env
  • 4.
    lancer laravel  $phpartisan serve  lien du site est généré
  • 5.
    routes  fichier web.php Route::get('/', function () {  return view('welcome');  //echo "ce site est";  });  utilisation d'une fonction anonyme ou d'un controlleurs  le / est routé vers la vue welcome  mettre à jour la vue  rajouter une nouvelle vue
  • 6.
    routes dynamiques  Route::get('/contact/{name}',function ($name) {  echo"contact name:".$name;  });  //http://127.0.0.1:8000/contact/mohammed/  Route::get('/contact/{name}/id/{id}', function ($name, $id) {  echo"contact name:".$name;  echo"<br> contact id:".$id;  });  http://127.0.0.1:8000/contact/mohammed/id/45
  • 7.
    validation des routes Route::get('/contact/{name}/id/{id}', function ($name, $id) {  echo"contact name:".$name;  echo"<br> contact id:".$id;  })->where(['name' => '[a-zA-Z]+', 'id' => '[0-9]+']);
  • 8.
    Controllers  création d'uncontroller  $php artisan make:controller ArticleController  respecter les règles de nommage  sur ArticleController.php:  <?php  namespace AppHttpControllers;  use IlluminateHttpRequest;  class ArticleController extends Controller  {  public function articles(){  echo"affichage des articles";  }  public function article($id){  echo"affichage de l'article ".$id;  }  }  sur web.php:  Route::get('/articles', 'ArticleController@articles');  Route::get('/article/{id}', 'ArticleController@article');
  • 9.
    migration  création dufichier de migration:  $php artisan make:migration create_articles_table --create=articles  Rajouter les champs nécessaires sur le fichier créé sur le répertoire migration  $table->string('name');  $table->string('description');  création de la base de données  configuration du fichier .env avec les paramètre de connexion à la base  génération des tables:  $php artisan migrate
  • 10.
    modèle  création dumodèle :  $php artisan make:model Article  <?php  namespace App;  use IlluminateDatabaseEloquentModel;  class Article extends Model  {  //  }
  • 11.
    Modèle  rajouter surle contrôleur :  use AppArticle;  public function newArticle(){  $newArticle = new Article();  $newArticle->name="stylo";  $newArticle->description="stylo à bille de haute qualité....";  $newArticle->save();  }  public function listArticles(){   $articles = Article::all();  print_r($articles);  }
  • 12.
    Modèle  rajouter sursur web.php:  Route::get('/addarticle/', 'ArticleController@newArticle');  Route::get('/listarticle/', 'ArticleController@listArticles');
  • 13.
    vues  modifier surle controlleur la fonction listArticles:  public function listArticles(){   $articles = Article::all();  //print_r($articles);  return view('articles', ['articles'=>$articles]);  }  créer le fichier articles.blade.php:  <h1>liste des articles</h1>  <table border=1>  @foreach($articles as $article)  <tr>  <td>{{$article->id}}</td>  <td>{{$article->name}}</td>  <td>{{$article->description}}</td>  </tr>  @endforeach  </table>
  • 14.
    Authentification  $composer requirelaravel/ui  $php artisan ui:auth
  • 15.
    Layouts  Créer unfichier master.blade.php dans le répertoire ressources/views/layouts  Mettre dedans le contenu HTML qui ne change pas dans les pages du site  Un menu | Home | Clients | Fournisseurs | Articles | Contact |  Rajouter dessus la partie dynamique suivante:  @yield(‘content’)  Créer un fichier vue accueil.blade.php dans ressources/views  Mettre dedans le contenu suivant :  @extends(‘layouts.master’)  @Section(‘content’)  …contenu HTML  @endsection
  • 16.
    Layouts  Rajouter dansles routes :  Route::get('accueil', function () {  return view('accueil');  });  Rajouter de la même manière d’autres vues qui héritent du layouts master (contact …)  Rajouter dans le fichier master.blade.php des liens vers ces vues via :  <a href = ‘’{{ url(‘accueil’) }}‘’> accueil</a>
  • 17.
    Ajouter un nouvelarticle  Dans le controller de l’article rajouter les fonctions  public function create(){  return view('article.create');  }  public function store(Request $request){  $article = new Article();  $article->name = $request->input('nom');  $article->description = $request->input('description');  $article->save();  }
  • 18.
    Ajouter un nouvelarticle  Rajouter dans les routes :  Route::get('articles/create', 'ArticleController@create');  Route::post('articles', 'ArticleController@store');  Créer un répertoire article dans views  Créer un fichier create.blade.php dans le répertoire article avec le contenu :
  • 19.
    Ajouter un nouvelarticle  @extends('layouts.app')  @Section('content')  <form action= "{{url('articles')}}" method="POST">  {{ csrf_field()}}  <table>  <tr><td>nom</td><td><input type="text" name="nom"></td></tr>  <tr><td>description</td><td><textarea name="description"></textarea></td></tr>  </table>  <input type="submit" name="" value="Enregistrer">  </form>  @endsection
  • 20.
    Affichage de laliste des articles  Dans le controller de l’article rajouter la fonction  public function index(){  $listArticle = Article::all();  return view('article.index', ['articles' => $listArticle]);  }  Rajouter à la fin de la fonction store  return redirect('articles');  Rajouter dans les routes :  Route::get('articles', 'ArticleController@index');  Créer un fichier index.blade.php dans le répertoire article avec le contenu :
  • 21.
    Affichage de laliste des articles  @extends('layouts.app')  @section('content')  <a href="{{url('articles/create')}}">Nouvel article</a>  <table border=1>  <tr><td>nom</td><td>description</td><td>modifier</td><td>supprimer</td></tr>  @foreach($articles as $article)  <tr> <td>{{$article->name}}</td>  <td>{{$article->description}}</td>  <td><a href="">modifier</a></td>  <td><a href="">supprimer</a></td> </tr>  @endforeach  </table>  @endsection
  • 22.
    Modifier un article Modifier le lien de modification sur index.blade.php avec :  <td><a href="{{url('articles/'.$article->id.'/edit')}}">modifier</a></td>  Dans le controller de l’article rajouter les fonctions  public function edit($id){  $article = Article::find($id);  return view('article.edit', ['article'=>$article]);  }  public function update(Request $request, $id){  $article = Article::find($id);  $article->name = $request->input('nom');  $article->description = $request->input('description');  $article->save();  return redirect('articles');  }
  • 23.
    Modifier un article Rajouter dans les routes :  Route::get('articles/{id}/edit', 'ArticleController@edit');  Route::put('articles/{id}', 'ArticleController@update');  Créer un fichier edit.blade.php dans le répertoire article avec le contenu :
  • 24.
    Modifier un article @extends('layouts.app')  @section('content')  <form action= "{{url('articles/'. $article->id)}}" method="POST">  <input type="hidden" name="_method" value="PUT">  {{ csrf_field()}}  <table>  <tr><td>nom</td><td><input type="text" name="nom" value="{{$article->name}}"></td></tr>  <tr><td>description</td><td><textarea name="description">  {{$article->description}}</textarea></td></tr>  </table>  <input type="submit" name="" value="Modifier">  </form>  @endsection
  • 25.
    Supprimer un article Modifier le lien de suppression sur index.blade.php avec :  <td><form action ="{{url('articles/'.$article->id)}}" method="post">  {{csrf_field()}}  {{method_field('DELETE')}}  <button type="submit" >supprimer</button></form></td>  Dans le controller de l’article rajouter la fonction  public function destroy($id){  $article = Article::find($id);  $article->delete();  return redirect('articles');  }  Rajouter dans les routes  Route::delete('articles/{id}', 'ArticleController@destroy');
  • 26.