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(), [
        '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.

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" => "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.