Cours Développement Web (1MPSSR) : TP4: Le CRUD D'une Table Dans La BD
Cours Développement Web (1MPSSR) : TP4: Le CRUD D'une Table Dans La BD
Cours Développement Web (1MPSSR) : TP4: Le CRUD D'une Table Dans La BD
Explication :
sentence(2, true): génère une phrase contenant au moins 2 mots.
year : génère une valeur d’année
paragraph(): génère un paragraphe par défaut de 3 phrases.
numberBetween(45,200): génère un nombre aléatoire dans cet intervalle.
Le seeder est une classe qui permet de définir la taille de la population. Allez au fichier
database/seeds/DatabaseSeeder.php et modifier le code de la fonction run pour
générer 10 films aléatoires dans la table films (inspirer vous de l’instruction commentée).
Il ne reste plus qu’à lancer la population avec la commande :
> php artisan db:seed
Si tout va bien on se retrouve avec 10 films dans la table films.
Les Contrôleurs et les routes
On va maintenant créer un contrôleur dit de ressource. Ce contrôleur contiendra par défaut
la définition vide des fonctions CRUD sur une table.
> php artisan make:controller FilmController --resource
Les 7 méthodes créées couvrent la gestion complète des films :
• index : pour afficher la liste des films,
• create : pour envoyer le formulaire pour la création d’un nouveau film,
• store : pour créer un nouveau film,
• show : pour afficher les données d’un film,
• edit : pour envoyer le formulaire pour la modification d’un film,
• update : pour modifier les données d’un film,
• destroy : pour supprimer un film.
Pour créer toutes les routes il suffit d’ajouter cette unique ligne dans le fichier web.php :
(n’oublier pas d’importer la classe de FilmController) :
Route::resource('films', FilmController::class);
Vérifions ce qui est généré comme route avec la commande qui liste toutes les routes :
> php artisan route:list
pour récupérer tout les donnés eli mawjoudin fil tab Film ou n7otouhom
fi variable $films
compact('films')=films=>$films
Ajouter devant chaque titre de films un lien hypertexte Détail permettant d’afficher le détail
de chaque film :
<td>
non de la route
<a href="{{ route('films.show', $film->id) }}" class="btn btn-
primary" >Détails</a>
</td>
Ce lien génère une requête HTTP envoyé par get vers la route nommé films.show en lui
transmettant l’id du film. Ceci permettra de générer l’url de la forme …/films/id
Action Détail
Dans le contrôleur c’est la méthode show qui est concernée. On va donc la coder.
Il faut toutefois préciser un point important. Dans la version du contrôleur générée par défaut
on voit que le film, dans la fonction show, est référencé par son identifiant :
public function show($id)
La variable id contient la valeur passée dans l’url, Par exemple …/films/8. Il suffit donc
ensuite d’aller chercher dans la base le film correspondant.
Action de suppression
La suppression d’un film correspond à cette route :
Dans la vie index, ajouter devant chaque bouton détail, un formulaire web dont l’action
pointe vers cette route et sa méthode est delete (envoyée comme paramètre de la requête) :
Comme pour la méthode show on utilise une liaison implicite et on obtient immédiatement
une instance du modèle.
Ajouter dans la vue index.blade.php un lien hypertexte Modifier qui pointe vers la route
qui appelle la méthode edit.
La vue edit.blade.php est identique à celle de create avec quelques modifications :
• L’action du formulaire change par la route : route('films.update', $film->id)
• La requête de modification est envoyée par put, donc ajouter ceci dans le code du formulaire :
@method('put')
• Les champs sont remplis par les attributs d’un film, par exemple :
value="{{ old('titre', $film->titre) }}"
Créer la vue edit.blade.php et tester l’action de modification d’un film.
La pagination
La pagination consiste à découper une liste de données à afficher dans une vue en plusieurs
pages avec la possibilité de naviguer dans ces pages grâce à une barre de navigation.
Pour appliquer les styles Bootstrap sur cette barre, on va modifier le code de la méthode
boot() de la classe App\Providers\AppServiceProvider :
Ce formulaire aura comme méthode get et l’action vers une route nommée films.find.
2. Créer dans le fichier web.php la route nommée films.find qui pointe sur une action
nommée find dans FilmController.
3. Ajouter l’action find dans FilmController dans laquelle on cherche la liste des films
selon le titre reçu dans la requête envoyée puis les paginer pour les envoyer à la vue index.
Voici comment rechercher les films par titre en utilisant l’opérateur like :