Funzionalità completa in Laravel: migrazione, policy, controller e test
Implementa una funzionalità Laravel dall’inizio alla fine: migrazione, modello, Form Request, Policy, controller, rotte e test Pest o PHPUnit, senza query N+1. Pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Include 5 variabili personalizzabili e puoi copiarlo gratuitamente con un clic.
Intermedio · Codice · In attesa di revisione editoriale
Prompt
Agisci come sviluppatore PHP senior specializzato in Laravel e in codice manutenibile.
Devo implementare questa funzionalità in un’applicazione Laravel {{versione_laravel}}: {{funzionalita}}.
- Entità e relazioni: {{entita}}
- Ruoli e permessi: {{ruoli}}
- Framework di test: {{test}}
Consegna, in quest’ordine:
1. Sintesi del design: tabelle, relazioni Eloquent, rotte e compito di ogni livello (controller, Form Request, Policy, classe action o service).
2. Migrazioni con chiavi esterne, indici e `onDelete` esplicito, più i modelli con `$fillable` o `$guarded`, `casts` e relazioni.
3. Form Request con regole di validazione e messaggi in italiano.
4. Una Policy registrata e applicata con `authorize` o il middleware `can`, per ogni ruolo.
5. Un controller snello (resource o single action) che deleghi la logica di business a una classe action, con `DB::transaction` dove ci sono più scritture.
6. Rotte con nome, middleware e route model binding.
7. Output: una API Resource se è un’API, oppure viste Blade minime se è web. Eager loading (`with`) per evitare query N+1.
8. Factory e feature test: caso felice, validazione fallita, utente non autorizzato (403) e record di un altro utente.
9. I comandi Artisan per generare i file ed eseguire i test.
Vincoli:
- Segui le convenzioni Laravel e PSR-12; nessuna logica nei file delle rotte.
- Non inventare colonne, ruoli o regole: chiedimi ciò che manca o usa [DA COMPLETARE].
- Se la versione scelta cambia qualcosa (per esempio la struttura di `bootstrap/app.php`), segnalalo.
Formato: un blocco di codice per file con il percorso, poi l’elenco dei passi di integrazione.Come usarlo
- Descrivi la funzionalità come user story con le sue regole.
- Indica le tabelle che esistono già per evitare duplicati.
- Genera i file con Artisan, incolla il codice ed esegui i test.
- Verifica la Policy con ogni ruolo prima del deploy.
Esempio d'uso
Funzionalità: i clienti chiedono preventivi e i commerciali li approvano · Entità: Cliente, Preventivo, RigaPreventivo · Laravel 11 · Pest.
Esempio di risultato
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 può tutto; null lascia decidere agli altri metodi
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;
}
}
In Laravel 11 la Policy viene rilevata in automatico se segue la convenzione App\Models\Quote → App\Policies\QuotePolicy: non serve registrarla in un AuthServiceProvider.
Integrazione
php artisan make:policy QuotePolicy --model=Quote- Nel controller:
Gate::authorize('approve', $quote); - Test Pest: un cliente che prova ad approvare riceve 403, così come un cliente che apre il preventivo di un altro.
isAdmin(),isSalesRep()eisCustomer()dipendono da come salvi i ruoli → [DA COMPLETARE]…
Dati chiave
- Categoria
- Programmazione e sviluppo · PHP
- Tipo di output
- Codice
- Livello
- Intermedio
- Pensato per
- ChatGPT, Claude, Gemini e Microsoft Copilot
- Verificato in
- In attesa di verifica editoriale
- Variabili
- Funzionalità, Entità e relazioni, Ruoli e permessi, Versione di Laravel e Framework di test
- Lingua
- Italiano
- Prezzo
- Gratuito, senza registrazione
- Aggiornato
- 07/11/2026
Domande frequenti
Perché una classe action invece di mettere tutto nel controller?
La logica diventa riutilizzabile da comandi, job e test, e il controller si limita a tradurre l’HTTP. Inoltre si testa più facilmente in isolamento.
Come individuo le query N+1 nel codice generato?
Attiva `Model::preventLazyLoading()` fuori dalla produzione: Laravel lancerà un’eccezione ogni volta che una relazione viene caricata in modo lazy.
A cosa serve questo prompt?
Implementa una funzionalità Laravel dall’inizio alla fine: migrazione, modello, Form Request, Policy, controller, rotte e test Pest o PHPUnit, senza query N+1.
Con quali strumenti di IA funziona?
È pensato per ChatGPT, Claude, Gemini e Microsoft Copilot. Non lo abbiamo ancora verificato in questi strumenti, quindi i risultati possono variare da uno all'altro.
Come personalizzo il prompt?
Clicca su «Personalizza» e compila le variabili (Funzionalità, Entità e relazioni, Ruoli e permessi, Versione di Laravel e Framework di test). Il testo si aggiorna all'istante e poi puoi copiarlo con un clic. I valori vengono salvati solo nel tuo browser.
Serve esperienza per usarlo?
È di livello intermedio: conviene conoscere l'argomento per fornire un buon contesto e valutare il risultato con occhio critico.
Questo prompt è gratuito?
Sì. Tutti i prompt di HomeCasa Prompts sono gratuiti, senza registrazione né abbonamento. Puoi usarli anche in progetti professionali.
Posso fidarmi dell'output dell'IA?
Consideralo una bozza di alta qualità: verifica sempre dati, cifre e affermazioni importanti prima di pubblicare o prendere decisioni.