Requests
Documentazione di riferimento: Laravel Form Request
Nel Framework Laravel la Form Request è il punto più corretto dove poter eseguire due azioni fondamentali per ogni richiesta:
- Autorizzazione: eseguita all'interno del metodo
authorize
- Validazione: eseguita all'interno del metodo
rules
Nella maggior parte dei casi le request sono create automaticamente dal comando weconstudio:model:init, che ne genera una per ogni metodo CRUD.
Spostare la logica di autorizzazione e di validazione all'interno di una classe specifica permette di avere un codice all'interno del controller più snello ed inoltre alle volte è possibile riutilizzare completamente una Form Request per un nuovo metodo, evitando così di duplicare il codice.
Per eseguire la logica di autorizzazione e validazione di una Form Request non è necessario istanziare la classe e lanciare qualche metodo particolare, ma grazie al Dependency Injection del Framework Laravel sarà sufficiente definire nella firma di un metodo del controller la Form Request preceduta dalla sua tipologia, per esempio:
public function index(UserIndexRequest $request)
{
$validated = $request->validated();
}
Se eseguo una chiamata API che finisce sul metodo index, automaticamente verranno lanciati i metodi authorize
e rules
all'interno della classe UserIndexRequest
e questo vuol dire che se arrivo all'interno del metodo index sono sicuro che la richiesta è stata autorizzata e gli input sono stati validati.
Un altro aspetto importante è che per recuperare gli input all'interno del controller conviene utilizzare il metodo validated
della Form Request, questo è fondamentale per evitare di recuperare input indesiderati. Se per esempio mi venisse passato un id nella richiesta e io usassi il metodo fill su un model potrei andare a cambiare l'id di quella risorsa che potrebbe portare a diversi problemi.