Controllers
Documentazione di riferimento: Laravel Controllers
Nel Framework Laravel il controller è il punto dove vengono raccolti gli input, viene elaborata la logica applicativa e quindi viene fornita una risposta.
Di solito c'è un legame stretto tra un controller ed una risorsa su database, infatti di default i nostri controller mettono a disposizioni i seguenti metodi:
configuration
: Datatables Configurationindex
: elenco risorseshow
: dettaglio risorsastore
: creazione risorsaupdate
: aggiornamento risorsadestroy
: cancellazione risorsa
E' fondamentale nei controller cercare di modularizzare il più possibile il codice e spostarlo in classi apposite così da rendere il controller snello e di facile lettura. Esempio:
- Logica di autorizzazione: Request + Policy
- Validazione degli input: Request + Validation
- Logica applicazione: Models oppure Services
- Decorazione della risposta: Resource
Nella maggior parte dei casi i controller da noi utilizzati sono creati automaticamente dal comando weconstudio:model:init.
Spesso utilizziamo api di risorse innestate, esempio:
GET categories/{category}/products
in questo caso è preferibile creare un controller specifico, esempio CategoryProductController
, che gestirà la richiesta. In questo modo lasciamo libero il classico ProductController che potrebbe avere logiche differenti.
Controller Innestati
Per generarli possiamo utilizzare il comando:
sail artisan weconstudio:model:init products --parent=categories
Maggiori informazioni qui weconstudio:model:init.