Skip to content

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:

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:

php
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.