Правило required_with
Правило required_with используется в валидации
данных Laravel и делает проверяемое поле обязательным
к заполнению, если в запросе присутствует хотя бы
одно из перечисленных полей. Правило принимает список
имён полей через запятую. Если ни одно из указанных
полей не присутствует в запросе, проверяемое поле
становится необязательным.
Синтаксис
<?php
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
$validator = Validator::make($request->all(), [
'field' => 'required_with:other_field,another_field',
]);
?>
В качестве параметров через запятую передаются имена полей, при наличии которых проверяемое поле становится обязательным.
Пример
Пусть поле 'phone' должно быть обязательно
заполнено, если в запросе есть поле 'email':
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class UserController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'phone' => 'required_with:email',
]);
if ($validator->fails()) {
return $validator->errors();
}
return "Validation passed";
}
}
?>
Отправим запрос с полем 'email':
[
'email' => 'user@example.com'
]
В этом случае поле 'phone' становится обязательным
и его отсутствие вызовет ошибку валидации.
Пример
Пусть поле 'address' обязательно, если в запросе
есть хотя бы одно из полей 'city' или 'zip':
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
class OrderController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'address' => 'required_with:city,zip',
'city' => 'string|max:255',
'zip' => 'string|max:20',
]);
if ($validator->fails()) {
return $validator->errors();
}
return "Validation passed";
}
}
?>
Отправим запрос с полем 'city':
[
'city' => 'Moscow'
]
Поле 'address' станет обязательным, так как
присутствует хотя бы одно из полей из списка
(в данном случае 'city').
Пример
Отправим запрос без полей 'city' и 'zip':
[
'name' => 'John'
]
В этом случае поле 'address' необязательно,
так как ни одно из указанных полей не присутствует
в запросе.
Смотрите также
-
правило
required,
которое делает поле всегда обязательным -
правило
required_if,
которое делает поле обязательным при выполнении условия -
правило
required_without,
которое делает поле обязательным при отсутствии других полей -
правило
present,
которое проверяет наличие поля в запросе