Przewodnik dla początkujących dotyczący walidacji Laravela
Kiedy budujemy stronę internetową w Laravel, musimy wiedzieć o walidacji Laravel. Laravel zapewnia inny sposób sprawdzania poprawności przychodzących danych. W tym artykule przyjrzymy się podstawom walidacji Laravela.
Budując aplikację, powinniśmy bezbłędnie stosować walidacje po stronie klienta i serwera. Dzięki temu możemy chronić naszą aplikację przed niepotrzebnymi danymi. W efekcie zaoszczędzi nam to dużo czasu na usuwanie danych o marnotrawstwie z aplikacji.
Powiedziawszy to, przyjrzyjmy się, jak zastosować walidację Laravel w swojej aplikacji.
W naszym samouczku bierzemy przykładowy formularz, który ma 2 pola tytuł i opis. Zastosujemy walidację, a jeśli walidacja się nie powiedzie, zostanie ona wyświetlona w naszym widoku.
Walidacja Laravela
Aby rozpocząć, musimy dołączyć poniższe oświadczenie do naszego pliku kontrolera.
Umieść to oświadczenie przed uruchomieniem kontrolera, jak poniżej.
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use Validator;
class PostController extends Controller
{
.....
}
Zanim napiszesz właściwy kod walidacyjny, przejdźmy do pliku widoku. Tworzymy prosty formularz z 2 polami tytułu i opisu.
<form action="{{ url('post') }}" method="post">
<div class="form-group">
<label for="exampleInputTitle">Post Title</label>
<input type="text" name="title" id="exampleInputTitle" />
</div>
<div class="form-group">
<label for="exampleInputBody">Post Body</label>
<textarea class="form-control" name="body" id="exampleInputBody" rows="10"></textarea>
</div>
{{ csrf_field() }}
<button type="submit" class="btn btn-default">Submit</button>
</form>
Gdy prześlemy formularz, wywoła on store()
metodę naszego kontrolera. W twoim przypadku może twoja metoda jest inna. Tak więc w naszej metodzie napiszemy kod walidacji w następujący sposób.
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
//safe to proceed form
}
Można zauważyć, że przekazaliśmy dwa klucze „tytuł" i „ciało”. To są nazwy naszych elementów formularza. Tutaj Laravel sprawdza, czy oba pola nie są puste, a pola tytułu nie przekraczają 255 znaków.
Jeśli którakolwiek z walidacji nie powiedzie się, użytkownik przekieruje na stronę, którą przekazaliśmy do metody redirect().
Wyświetl komunikaty o błędach w widoku
Zastosowaliśmy walidację po stronie serwera. Przyjrzyjmy się teraz, jak wyświetlać komunikaty o błędach.
Powiedzmy, że w naszym przypadku walidacja nie powiodła się i teraz musimy wyświetlić komunikaty o błędach w naszym formularzu. Istnieją 2 sposoby wyświetlania błędów w widokach Laravel. Po pierwsze, możemy wyświetlić wszystkie komunikaty o błędach razem na górze formularza. Drugim sposobem jest wyświetlenie go obok każdego pola, w którym występuje błąd.
Aby wyświetlić komunikat o błędzie u góry formularza, dodaj poniższy kod nad tagiem formularza.
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Ten kod wyświetli komunikat o błędzie, jak pokazano na poniższym zrzucie ekranu:
W drugim sposobie, aby wydrukować komunikat o błędzie po każdym polu. W takim przypadku nasz kod wygląda następująco:
<div class="form-group">
<label for="exampleInputTitle">Post Title</label>
<input type="text" name="title" id="exampleInputTitle" />
@if ($errors->has('title'))
<span class="error">
{{ $errors->first('title') }}
</span>
@endif
</div>
<div class="form-group">
<label for="exampleInputBody">Post Body</label>
<textarea class="form-control" name="body" id="exampleInputBody" rows="10"></textarea>
@if ($errors->has('body'))
<span class="error">
{{ $errors->first('body') }}
</span>
@endif
</div>
Zauważ, że używamy @if ($errors->has('title'))
do sprawdzania, czy pole „tytuł” ma błąd walidacji. Jeśli to pole zawiera błąd, wypisujemy go za pomocą {{ $errors->first('title') }}
. Tę samą logikę zastosowaliśmy dla pola „ciało”. Spójrz na poniższy zrzut ekranu tego typu.
Mamy nadzieję, że rozumiesz, jak zastosować walidację Laravel w swojej aplikacji. Podziel się swoimi przemyśleniami w sekcji komentarzy poniżej.
Powiązane artykuły
- Wysyłanie wiadomości e-mail przez serwer SMTP Gmaila w Laravel
- Jak zainstalować i używać CKEditor w Laravel?