Я хочу сделать собственный валидатор в дополнение к required_without, который также не будет выполнен, если заполнено все поле.
Текущие правила:
'foo' => 'required_without:baz',
'bar' => 'required_without:baz',
'baz' => 'required_without_all:foo,bar',
В результате:
- Foo, Bar и Baz все пусты (ошибка)
- Один из Foo / Bar заполнен, другой пуст (ошибка)
- Foo и Bar заполнены, Baz пуст (OK)
- Foo и Bar пустые, Baz заполнен (OK)
- Foo Bar, и Baz заполнены (OK) ← Я хочу, чтобы это стало ошибкой
Итак, я создаю пользовательский валидатор, используя расширение , и хочу использовать его следующим образом:
'foo' => 'required_without:bar|empty_if_present:baz',
'bar' => 'required_without:foo|empty_if_present:baz',
'baz' => 'required_without_all:foo,bar|empty_if_present:foo,bar',
AppServiceProvider. php
Validator::extend('empty_if_present', function ($attribute, $value, $parameters, $validator) {
$attributeIsNotEmpty = !empty($value);
$paramsAreEmpty = true;
foreach ($parameters as $param) {
// how do I check if Foo and Bar are empty??
if ($param is not empty) {
$paramsAreEmpty = false;
}
}
return $attributeIsNotEmpty && $paramsAreEmpty;
}, 'The :attribute must be empty if :fields is present.');