Travaux Pratique 5
Travaux Pratique 5
Travaux Pratique 5
a. Lancer laragon et démarrer les services de serveur d’application et de serveur de base de données MySQL.
Note : Si vous rencontrer un problème de routage insérer le code suivant dans le terminal afin
d’effacer le cache de routage. « php artisan route:cache »
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<form action='' method='post'>
<div class="form-group">
<label for="name"> Nom</label>
<input type="text" class="form-control" name="name"
placeholder="Entrez le nom">
</div>
<div class="form-group">
<label for="fcolor"> couleur favorite</label>
<input type="text" class="form-control" name="fcolor"
placeholder="Entrez la couleur favorite">
</div>
<div class="form-group">
<label for="email"> Email</label>
<input type="text" class="form-control" name="email"
placeholder="Entrez rer le email">
</div>
<div class="form-group">
c. Créer un contrôleur
f. Ouvrir le fichier « web.php » dans le répertoire App/routes/ et ajouter la route vers la fonction index dans le
contrôleurs.
Route::get('crud',[LaravelCrudController::class,'index']);
Route::get('crud',[LaravelCrudController::class,'index']);
Route::post('add',[LaravelCrudController::class, 'add']);
k. Cela veut dire qu’il vous manque la déclaration @csrf après la ligne suivante
$request->validate([
'name'=>'required',
'fcolor'=>'required',
'email'=>'required|email|unique:crud'
]);
}
<body>
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3 mt-5">
<div class="h4 text-center">Ajaouter un nouveau Enregistrement</div>
<hr>
<form action='add' method='post'>
@csrf
<div class="form-group">
<label for="name"> Nom</label>
<input type="text" class="form-control" name="name"
placeholder="Entrer le nom">
@error('name') <span class="text-danger" >{{$message}} </span>
@enderror
</div>
<div class="form-group">
<label for="fcolor"> couleur favorite</label>
<input type="text" class="form-control" name="fcolor"
placeholder="Entre la couleur favorite">
@error('fcolor') <span class="text-danger" >{{$message}} </span>
@enderror
</div>
<div class="form-group">
<label for="email"> Email</label>
<input type="text" class="form-control" name="email"
placeholder="Entrer le email">
@error('email') <span class="text-danger" >{{$message}} </span>
@enderror
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-
block">SAVE</button>
</div>
</form>
</div>
</div>
</div>
</body>
d. Vérifier le résultat en cliquant sur « save » sans entrer des données dans le formulaire.
e. Pour récupérer les valeurs non valide entrées dans les champs par l’utilisateur. Ajouter le code
suivant :
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3 mt-5">
<div class="h4 text-center">Ajaouter un nouveau Enregistrement</div>
<hr>
<form action='add' method='post'>
@csrf
<div class="form-group">
<label for="name"> Nom</label>
<input type="text" class="form-control" name="name"
placeholder="Entrer le nom" value="{{old('name')}}">
@error('name') <span class="text-danger" >{{$message}} </span>
@enderror
</div>
<div class="form-group">
<label for="fcolor"> couleur favorite</label>
<input type="text" class="form-control" name="fcolor"
placeholder="Entre la couleur favorite" value="{{old('fcolor')}}">
@error('fcolor') <span class="text-danger" >{{$message}} </span>
@enderror
</div>
<div class="form-group">
<label for="email"> Email</label>
<input type="text" class="form-control" name="email"
placeholder="Entrer le email" value="{{old('email')}}">
@error('email') <span class="text-danger" >{{$message}} </span>
@enderror
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-
block">SAVE</button>
</div>
</form>
</div>
</div>
</div>
g. Insérer des données dans la table « crud » comme c’est montre dans la suite : ouvrez le fichier
contrôler « » et modifier la fonction add :
$request->validate([
'name'=>'required',
'fcolor'=>'required',
'email'=>'required|email|unique:crud'
]);
$query = DB::table('crud')->insert([
'name'=>$request->input('name'),
'fcolor'=>$request->input('fcolor'),
'email'=>$request->input('email')
]);
if($query){
return back()->with('success','Les donnees sont bien inseres');
}
else{
return back()->with('fail',' un problème est survenu, les données ne sont bien
insères');
}
}
h. Pour afficher les messages d’erreurs de validation des données, ajouter le code ci-après avant la
déclaration du formulaire.
@if(Session::get('fail'))
<div class="alert alert-danger">
{{ Session::get('fail') }}
</div>
@endif
i. Visualiser le résultat d’insertion de donnes dans le formulaire et vérifier la sauvegarde des données
dans la table « crud ».
4. Retirer les donnes d’une table
a. Après la balise de fermetures du formulaire dans le ficher « index.blade.php », ajouter le code suivant :
</table>
function index()
{
$data = array(
'list' => DB::table('crud')->get()
);
return view('crud.index',$data);
}
c. Ajouter le code Laravel permettant d’afficher le contenu de la table crud dans le fichier « index.blade.php ».
</form>
<br>
<table class="table table-cover">
<thead>
<th>Nom</th>
<th>Couleur favorite</th>
<th>Email</th>
<th>Action</th>
</thead>
<tbody>
@foreach($list as $item)
<tr>
<td>{{ $item->name }}</td>
<td>{{ $item->fcolor }}</td>
<td>{{ $item->email }}</td>
<td> </td>
</tr>
@endforeach
</tbody>
</table>
<tbody>
@foreach($list as $item)
<tr>
<td>{{ $item->name }}</td>
<td>{{ $item->fcolor }}</td>
<td>{{ $item->email }}</td>
<td>
<div class="btn-group">
<a href="#" class="btn btn-danger btn-xs">Effacer</a>
<a href="edit/{{ $item->id }}" class="btn btn-primary btn-xs">Editer</a>
</div>
</td>
</tr>
@endforeach
</tbody>
b. Ajouter la fonction edit dans la classe « LaravelCrudController » permettant d’éditer la ligne de la table, l’id de la
ligne étant le paramètre d’entrée de la cette fonction.
function edit($id){
echo $id;
}
Route::get('crud',[LaravelCrudController::class,'index']);
Route::post('add',[LaravelCrudController::class, 'add']);
Route::get('edit/{id}',[LaravelCrudController::class, 'edit']);
d. Tester le fonctionnement du bouton éditer de la page « index.blade.php », cliquer sur une ligne quelconque de la
table et vérifier que le numéro de la ligne s’affiche dans le navigateur.
e. Modifier la fonction edit dans la classe « » pour permettre la récupération des donnes et envoyer le résultat vers
une page « edit.blade.php » que vous créez par la suite.
function edit($id){
$row =DB::table('crud')
->where('id',$id)
->first();
$data = ['info'=>$row];
return view('crud.edit',$data);
}
- <div class="container">
- <div class="row">
- <div class="col-md-6 col-md-offset-3 mt-5">
- <div class="h4 text-center">{{$Title}} | TP LARAVEL</div>
- <hr>
- @if(Session::get('success'))
- <div class="alert alert-success">
- {{ Session::get('success') }}
- </div>
- @endif
-
- @if(Session::get('fail'))
- <div class="alert alert-danger">
- {{ Session::get('fail') }}
- </div>
- @endif
-
- <form action='add' method='post'>
<div class="form-group">
<label for="name"> Nom</label>
<input type="text" class="form-control" name="name" placeholder="Entrer le nom" value="{{
Info->name }}">
@error('name') <span class="text-danger">{{$message}} </span> @enderror
</div>
<div class="form-group">
<label for="fcolor"> couleur favorite</label>
<input type="text" class="form-control" name="fcolor" placeholder="Entre la couleur
favorite" value="{{Info->color }}">
@error('fcolor') <span class="text-danger">{{$message}} </span> @enderror
</div>
<div class="form-group">
<label for="email"> Email</label>
<input type="text" class="form-control" name="email" placeholder="Entrer le email"
value="{{Info->email }}">
@error('email') <span class="text-danger">{{$message}} </span> @enderror
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary btn-block">UPDATE</button>
</div>
</form>
i. Visualiser le résultat et vérifier que les données d’une ligne de la table sera transmit a la page « edit.blade.php »
pour la modifier.
j. Maintenant que les données sont affiche, nous allons procéder à la sauvegarde des modification apporte a cette
ligne dans la table « crud ».
Pour le faire modifier l’attribut « action » du formulaire dans le fichier « edit.blade.php »
$request->validate([
'name'=>'required',
'fcolor'=>'required',
'email'=>'required|email|unique:crud'
]);
Route::post('update',[LaravelCrudController::class, 'update'])->name('update');
n. Ajouter le code suivant permettant de sauvegarder les données dans la table « crud »
o. Rediriger vers la page de sais des données une fois la sauvegarde a été effectué avec succès.
Si vous rencontrer un probleme de routage insérer le code suivant dans le terminal afin d’effacer le cache de
routage. « php artisan route:cache »
a. Pour effacer un enregistrement dans une table de base de données, ouvrir le fichier index.blade.php et modifier
le l’attribut href du lien hypertexte comme suit :
</thead>
<tbody>
@foreach($list as $item)
<tr>
<td>{{ $item->name }}</td>
<td>{{ $item->fcolor }}</td>
<td>{{ $item->email }}</td>
<td>
<div class="btn-group">
<a href="delete/{{ $item->id }}" class="btn btn-danger btn-xs">Effacer</a>
<a href="edit/{{ $item->id }}" class="btn btn-primary btn-xs">Editer</a>
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
function delete($id){
Route::get('delete/{id}',[LaravelCrudController::class, 'delete']);
d. Completer la function delete affin de permettre la suppression d’une ligne de la table « curd ».
function delete($id){
// echo $id;
$delete = DB:: table('crud')->where('id',$id)
->delete();
return redirect('crud');
}