Laravel ma dobrze zaprojektowany system walidacji przesłanych danych.
Aby wykonać walidację wystarczy kawałek kodu przykład poniżej:
$data = $request->validate([
'url' => ['required', 'unique:sites,url,' . $request->url . ',id,user_id,' . $request->user()->id, 'max:255', 'min:2', 'url'],
'name' => ['required', 'max:255', 'min:2']
]);
Krótki opis:
Pole url sprawdza czy jest uzupełnione oraz musi być unikalne w tabeli site dla pola URL oraz unikalne dla danego użytkownika. Czyli w bazie mogą być dwa takie same adresu URL ale każdy należy do innego użytkownika. Adres może mieć maksymalnie 255 znaków oraz minimalnie 2 znaki.
Pole name: wymagane, maksymalnie 255 znaków i minimalnie 255 znaków.
Jeśli chcemy coś „dokleić” do wysłanego formularza na przykład status (wiadomo można zdefiniować to w bazie danych jako domyślna wartość), lecz jeśli chcemy dodać na przykład ID zalogowanego użytkownika.
$data['user_id'] = $request->user()->id;
Następnie zapisujemy nowy rekord w bazie
$site = Site::create($data);
Nie potrzebujemy żadnych ifów ponieważ laravel sam dba o to czy walidacja przebiegła pomyślnie i jeśli nie zostanie wszystko spełnione otrzymamy stosowny komunikat.
Jeśli chcemy dodać własne komunikaty błędów oczywiście możemy zrobić to przez flash message w laravelu.
Dodaj komentarz