Skip to content

Validazione

Guida Laravel

La validazione del contenuto di una richiesta viene eseguita nel metodo rules() del tipo.

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

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

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