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(), [
...$rules->rules(),
'with' => ['nullable', 'array'],
'with.*' => ['string', Rule::in([
//
])],
]);
}
N.B. nell'array del metodo
Rule::in()
, 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' => __('users.validation.last_name.required'),
'first_name' => __('users.validation.first_name.required'),
'role' => __('users.validation.role.required'),
'tax_number' => __('users.validation.tax_number.required'),
'company_id' => __('users.validation.company_id.required'),
];
}
N.B. l'array può anche non essere compilato (altrimenti vedi i18n), verranno ritornati messaggi d'errore di default in caso.