Правило required
Правило required является одним из самых часто используемых правил валидации в Laravel.
Оно проверяет, что переданное поле присутствует в данных запроса и не является пустым.
При этом пустыми считаются следующие значения: пустая строка, пустой массив, null или значение false.
Если поле отсутствует в запросе или содержит одно из перечисленных значений,
валидация не проходит и выводится сообщение об ошибке.
Синтаксис
Правило required используется в массиве правил валидации:
<?php
$rules = [
'field_name' => 'required',
];
?>
Можно комбинировать с другими правилами через вертикальную черту:
<?php
$rules = [
'email' => 'required|email|min:6',
];
?>
Пример
Давайте создадим валидацию для регистрационной формы с обязательным полем имени:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class AuthController extends Controller
{
public function register(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:50',
'email' => 'required|email|unique:users',
'password' => 'required|min:6',
]);
if ($validator->fails()) {
return response()->json([
'errors' => $validator->errors()
], 422);
}
return response()->json([
'message' => 'Registration successful'
], 200);
}
}
?>
Результат выполнения при отправке формы без поля 'name':
{
"errors": {
"name": ["The name field is required."]
}
}
Пример
Использование правила required в Form Request для создания статьи:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ArticleRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title' => 'required|string|max:200',
'content' => 'required|string|min:50',
'category_id' => 'required|integer|exists:categories,id',
'is_published' => 'boolean',
];
}
public function messages()
{
return [
'title.required' => 'The title field is mandatory',
'content.required' => 'Please provide article content',
'category_id.required' => 'Category must be selected',
];
}
}
?>
Пример использования запроса в контроллере:
<?php
namespace App\Http\Controllers;
use App\Http\Requests\ArticleRequest;
use App\Models\Article;
class ArticleController extends Controller
{
public function store(ArticleRequest $request)
{
$article = Article::create($request->validated());
return response()->json([
'id' => $article->id,
'message' => 'Article created successfully'
], 201);
}
}
?>
Пример
Валидация массива с обязательными элементами:
<?php
use Illuminate\Support\Facades\Validator;
$data = [
'users' => [
['name' => 'John', 'email' => 'john@example.com'],
['name' => 'Jane', 'email' => ''],
]
];
$validator = Validator::make($data, [
'users.*.name' => 'required|string',
'users.*.email' => 'required|email',
]);
$res = $validator->fails();
echo $res;
?>
Результат выполнения кода:
"1"
В данном примере валидация не проходит, потому что у второго пользователя поле 'email' пустое.
Смотрите также
-
правило
required_if,
которое делает поле обязательным при выполнении условия -
правило
required_with,
которое требует поле при наличии другого поля -
правило
nullable,
которое позволяет полю быть пустым -
правило
filled,
которое требует поле только если оно присутствует в запросе