Руководство для начинающих по валидации Laravel
Когда мы создаем веб-сайт на Laravel, мы должны знать о валидации Laravel. Laravel предоставляет другой способ проверки ваших входящих данных. В этой статье мы изучаем некоторые основы валидации Laravel.
При создании приложения мы должны в обязательном порядке применять проверки на стороне клиента и на стороне сервера. Таким образом мы сможем защитить наше приложение от ненужных данных. В результате это сэкономит нам много времени, удаляя ненужные данные из приложения.
Сказав это, давайте посмотрим, как применить проверку Laravel в вашем приложении.
Для нашего руководства мы возьмем примерную форму, которая имеет 2 поля: заголовок и описание. Мы применим проверку, и если проверка не удалась, она отобразится в нашем представлении.
Проверка Laravel
Для начала нам нужно включить приведенную ниже инструкцию в наш файл контроллера.
Поместите этот оператор перед началом вашего контроллера, как показано ниже.
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use Validator;
class PostController extends Controller
{
.....
}
Прежде чем писать фактический код проверки, давайте перейдем к файлу представления. Создаем простую форму с 2 полями заголовок и описание.
<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>
Когда мы отправляем форму, она вызывает store()
метод нашего контроллера. В вашем случае, возможно, ваш метод другой. Итак, в нашем методе мы напишем код проверки следующим образом.
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
}
Вы можете заметить, что мы передали два ключа title и body. Это названия наших элементов формы. Здесь Laravel проверяет, не являются ли оба поля пустыми и не превышают ли поля заголовка 255 символов.
Если какая-либо из проверок не удалась, пользователь перенаправит на страницу, которую мы передали методу redirect().
Отображение сообщений об ошибках в представлении
Мы применили проверку на стороне сервера. Теперь давайте посмотрим, как отображать сообщения об ошибках.
Допустим, в нашем случае проверка не удалась, и теперь нам нужно отображать сообщения об ошибках в нашей форме. Есть 2 способа отобразить ошибки в представлениях Laravel. Во-первых, мы можем отображать все сообщения об ошибках вместе в верхней части формы. Второй способ – отображать его рядом с каждым полем, в котором есть ошибка.
Чтобы отобразить сообщение об ошибке вверху формы, добавьте приведенный ниже код над тегом формы.
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Этот код отобразит сообщение об ошибке, как показано на снимке экрана ниже:
Во втором – выводить сообщение об ошибке после каждого поля. В этом случае наш код выглядит следующим образом:
<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>
Обратите внимание, что мы используем, @if ($errors->has('title'))
чтобы проверить, есть ли в поле «заголовок» ошибка проверки. Если в этом поле есть ошибка, мы печатаем ее, используя {{ $errors->first('title') }}
. Ту же логику мы применили для поля body. Взгляните на приведенный ниже снимок экрана этого типа.
Мы надеемся, что вы понимаете, как применять проверку Laravel в своем приложении. Пожалуйста, поделитесь своими мыслями в разделе комментариев ниже.
Статьи по Теме
- Отправка электронной почты через SMTP-сервер Gmail в Laravel
- Как установить и использовать CKEditor в Laravel