Fonctionnalité Laravel complète : migration, policy, contrôleur et tests
Développez une fonctionnalité Laravel de bout en bout : migration, modèle, Form Request, Policy, contrôleur, routes et tests Pest ou PHPUnit, sans requêtes N+1. Conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Il comprend 5 variables personnalisables et vous pouvez le copier gratuitement en un clic.
Intermédiaire · Code · En attente de relecture éditoriale
Prompt
Agis comme un développeur PHP senior spécialisé dans Laravel et le code maintenable.
Je dois implémenter cette fonctionnalité dans une application Laravel {{version_laravel}} : {{fonctionnalite}}.
- Entités et relations : {{entites}}
- Rôles et permissions : {{roles}}
- Framework de tests : {{tests}}
Livrables, dans cet ordre :
1. Résumé de la conception : tables, relations Eloquent, routes et rôle de chaque couche (contrôleur, Form Request, Policy, action ou service).
2. Les migrations avec clés étrangères, index et `onDelete` explicite, puis les modèles avec `$fillable` ou `$guarded`, `casts` et relations.
3. Les Form Requests avec règles de validation et messages en français.
4. Une Policy enregistrée et appliquée via `authorize` ou le middleware `can`, pour chaque rôle.
5. Un contrôleur léger (resource ou à action unique) qui délègue la logique métier à une classe d’action, avec `DB::transaction` dès qu’il y a plusieurs écritures.
6. Des routes nommées avec middleware et route model binding.
7. La sortie : une API Resource pour une API, ou des vues Blade minimales pour une appli web. Chargement anticipé (`with`) pour éviter les requêtes N+1.
8. Des factories et des tests de fonctionnalité : cas nominal, validation en échec, utilisateur non autorisé (403) et ressource d’un autre utilisateur.
9. Les commandes Artisan pour générer les fichiers et lancer les tests.
Contraintes :
- Respecte les conventions Laravel et PSR-12 ; aucune logique dans les fichiers de routes.
- N’invente ni colonnes, ni rôles, ni règles : demande-moi ce qui manque ou indique [À COMPLÉTER].
- Si la version choisie change quelque chose (par exemple la structure de `bootstrap/app.php`), précise-le.
Format : un bloc de code par fichier avec son chemin, puis la liste des étapes d’intégration.Comment l'utiliser
- Décrivez la fonctionnalité sous forme de récit utilisateur avec ses règles.
- Indiquez les tables qui existent déjà pour éviter les doublons.
- Générez les fichiers avec Artisan, collez le code et lancez les tests.
- Vérifiez la Policy avec chaque rôle avant de déployer.
Exemple d'utilisation
Fonctionnalité : les clients demandent des devis et les commerciaux les valident · Entités : Client, Devis, LigneDevis · Laravel 11 · Pest.
Exemple de résultat
4. Policy — app/Policies/QuotePolicy.php
<?php
namespace App\Policies;
use App\Enums\QuoteStatus;
use App\Models\Quote;
use App\Models\User;
class QuotePolicy
{
// L’admin peut tout faire ; null laisse les autres méthodes décider
public function before(User $user): ?bool
{
return $user->isAdmin() ? true : null;
}
public function view(User $user, Quote $quote): bool
{
return $user->isSalesRep() || $quote->customer->user_id === $user->id;
}
public function create(User $user): bool
{
return $user->isCustomer();
}
public function approve(User $user, Quote $quote): bool
{
return $user->isSalesRep() && $quote->status === QuoteStatus::Pending;
}
}
Avec Laravel 11, la Policy est découverte automatiquement si elle respecte la convention App\Models\Quote → App\Policies\QuotePolicy : inutile de l’enregistrer dans un AuthServiceProvider.
Intégration
php artisan make:policy QuotePolicy --model=Quote- Dans le contrôleur :
Gate::authorize('approve', $quote); - Test Pest : un client qui tente de valider reçoit 403, de même qu’un client qui ouvre le devis d’un autre.
isAdmin(),isSalesRep()etisCustomer()dépendent de la façon dont vous stockez les rôles → [À COMPLÉTER]…
Informations clés
- Catégorie
- Programmation et développement · PHP
- Type de résultat
- Code
- Niveau
- Intermédiaire
- Conçu pour
- ChatGPT, Claude, Gemini et Microsoft Copilot
- Vérifié sur
- En attente de vérification éditoriale
- Variables
- Fonctionnalité, Entités et relations, Rôles et permissions, Version de Laravel et Framework de tests
- Langue
- Français
- Prix
- Gratuit, sans inscription
- Mis à jour
- 07/11/2026
Questions fréquentes
Pourquoi une classe d’action plutôt que tout mettre dans le contrôleur ?
La logique devient réutilisable depuis des commandes, des jobs ou des tests, et le contrôleur ne fait que traduire le HTTP. Elle est aussi plus simple à tester isolément.
Comment repérer les requêtes N+1 dans le code généré ?
Activez `Model::preventLazyLoading()` hors production : Laravel lève une exception dès qu’une relation est chargée paresseusement.
À quoi sert ce prompt ?
Développez une fonctionnalité Laravel de bout en bout : migration, modèle, Form Request, Policy, contrôleur, routes et tests Pest ou PHPUnit, sans requêtes N+1.
Avec quels outils d'IA fonctionne-t-il ?
Il est conçu pour ChatGPT, Claude, Gemini et Microsoft Copilot. Nous ne l'avons pas encore vérifié sur ces outils ; les résultats peuvent donc varier de l'un à l'autre.
Comment personnaliser le prompt ?
Cliquez sur « Personnaliser » et remplissez les variables (Fonctionnalité, Entités et relations, Rôles et permissions, Version de Laravel et Framework de tests). Le texte se met à jour instantanément et vous pouvez ensuite le copier en un clic. Les valeurs sont stockées uniquement dans votre navigateur.
Faut-il de l'expérience pour l'utiliser ?
Il est de niveau intermédiaire : il vaut mieux connaître le sujet pour fournir un bon contexte et relire le résultat d'un œil critique.
Ce prompt est-il gratuit ?
Oui. Tous les prompts de HomeCasa Prompts sont gratuits, sans inscription ni abonnement. Vous pouvez aussi les utiliser dans des projets professionnels.
Puis-je me fier au résultat de l'IA ?
Considérez-le comme un brouillon de qualité : vérifiez toujours les données, les chiffres et les affirmations importantes avant de publier ou de prendre des décisions.