Условный валидатор, который требует, чтобы поле было одним - PullRequest
3 голосов
/ 06 июня 2019

Я хотел бы принять мою update проверку по следующим критериям:

  • firstname и lastname присутствуют и, следовательно, требуются, но deceased_at не предоставляется
  • или deceased_at дается один

Это имеет смысл, потому что мы можем обновить любое поле, но когда мы записываем смерть кого-то, мы никогда не изменим значение поля,

    $validator = Validator::make($request->all(), [
        'firstname' => 'required_unless:deceased_at|max:255',
        'lastname' => 'required_unless:deceased_at|max:255',
        'deceased_at' => 'required_without_all:firstname,lastname|date'
    ]);

required_without_all громоздко использовать, потому что я должен упомянуть каждое поле.Я бы предпочел что-то вроде required_alone.

Какая альтернатива?

1 Ответ

2 голосов
/ 06 июня 2019

Я думаю, что вы могли бы перейти к делу в качестве альтернативы?

$validator = Validator::make($request->all(), $this->rules($request));

...

protected function rules(Request $request) : array
{
    return $request->has('deceased_at')
        ? ['deceased_at' => 'required|date']
        : [
            'first_name' => 'required|max:255',
            'last_name' => 'required|max:255',
        ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...