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

  1. Descrivi la funzionalità come user story con le sue regole.
  2. Indica le tabelle che esistono già per evitare duplicati.
  3. Genera i file con Artisan, incolla il codice ed esegui i test.
  4. 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

  1. php artisan make:policy QuotePolicy --model=Quote
  2. Nel controller: Gate::authorize('approve', $quote);
  3. Test Pest: un cliente che prova ad approvare riceve 403, così come un cliente che apre il preventivo di un altro.
  4. isAdmin(), isSalesRep() e isCustomer() 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.

Prompt correlati