Метод validate
Метод validate вызывается непосредственно из объекта запроса и выполняет проверку входящих данных по заданным правилам. Первым параметром передаётся массив правил валидации, вторым - массив пользовательских сообщений об ошибках, третьим - массив атрибутов для замены в сообщениях. Если валидация не проходит, выбрасывается исключение ValidationException, и пользователь автоматически перенаправляется обратно с ошибками.
Синтаксис
<?php
$request->validate($rules, $messages, $attributes);
?>
Пример
Давайте выполним валидацию данных в контроллере при создании статьи:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'content' => 'required|string',
'status' => 'in:draft,published'
]);
$article = Article::create($validated);
return redirect('/articles')->with('success', 'Article created');
}
}
?>
Пример
Давайте выполним валидацию с пользовательскими сообщениями об ошибках:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'email' => 'required|email',
'age' => 'required|integer|min:18',
'name' => 'required|string|max:50'
], [
'email.required' => 'The email field is required',
'email.email' => 'Please enter a valid email address',
'age.min' => 'You must be at least 18 years old',
'name.max' => 'The name must not exceed 50 characters'
]);
return $validated;
}
}
?>
Пример
Давайте выполним валидацию с использованием атрибутов для замены в сообщениях:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function update(Request $request)
{
$validated = $request->validate([
'username' => 'required|string|min:3',
'password' => 'required|string|min:8',
'email' => 'required|email'
], [
'required' => 'The :attribute field is required',
'min' => 'The :attribute must be at least :min characters',
'email' => 'The :attribute must be a valid email address'
], [
'username' => 'Username',
'password' => 'Password',
'email' => 'Email Address'
]);
return $validated;
}
}
?>
Пример
Давайте выполним валидацию с проверкой существования записи в базе данных:
<?php
namespace App\Http\Controllers;
use App\Models\Category;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:200',
'category_id' => 'required|exists:categories,id',
'user_id' => 'required|exists:users,id'
]);
return $validated;
}
}
?>
Результат выполнения кода:
["title" => "My Post", "category_id" => 1, "user_id" => 5]