Validazione
La validazione del contenuto di una richiesta viene eseguita nel metodo rules()
del tipo.
public function rules(): array
{
$rules = new UserRulesCollection(); /** Auto generata dal comando */
return array_merge($rules->rules(), [
'with' => 'nullable|array',
'with.*' => 'in:' . join(',', [])
]);
}
N.B. nell'array del metodo
join()
, si devono scrivere tutte quelle relazioni che vogliamo abilitare al Frontend, es. ["company", "absences"].
Classe di regole
Al momento della creazione della risorsa, verrà generata una classe di regole che estenderà RulesCollection
.
All'interno di questa ci saranno i metodi:
customRules()
Questo metodo tornerà un array contente le regole di validazione di ogni chiave. E' tranquillamente possibile usare tutti i modi già esistenti in Laravel per farlo.
protected function customRules(Request $request):array
{
return [
"last_name" => ["required", "string"],
"first_name" => ["required", "string"],
"role" => new Enum(RoleEnum::class),
"tax_number" => new TaxNumberValidationRule(),
"company_id" => Rule::requiredIf(fn () => is_null($this->local_unit_id)),
];
}
N.B. questo metodo eseguirà l'override delle chiavi (qualora ci fossero), della proprietà
$originalRules
generata dopo l'esecuzione della migrazione, che rispecchia la configurazione della tabella nel database.
messages()
Questo metodo tornerà un array contente i messaggi da ritornare nel caso in cui una validazione non passi.
protected function messages(Request $request):array
{
return [
"last_name" => "E' necessario compilare il campo 'Cognome'",
"first_name" => "E' necessario compilare il campo 'Nome'",
"role" => "Ruolo non esistente",
"tax_number" => "Il Codice Fiscale fornito non risulta corretto",
"company_id" => "Specificare una Company se l'utente non sarà associato a nessuna Unità Locale",
];
}
N.B. l'array può anche non essere compilato, verranno ritornati messaggi d'errore di default in caso.