Laravel Validation - зависит от значения другого поля ввода - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть 2 поля статуса и выпускаГода и производстваГода.Я должен поставить подтверждение, что:

 $request->
    'productionYear' => 'nullable|digits:4',
    'releaseYear'    => 'required|digits:4|after_or_equal:year_of_production',
    'status'         =>'required|in:Released,UnReleased',
 ]);

Как мне поставить следующие проверки: Если статус установлен на Выпущено, то Год выпуска и Год выпуска не должны быть больше, чем в этом году.

Если статус установлен как «Не выпущен», то Год производства не должен превышать один год с этого года

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Вы можете попробовать пользовательскую проверку, как показано ниже.Я не проверял, надеюсь, это даст вам представление.

use Illuminate\Support\Facades\Input;

....
'status'         => 'required|in:Released,UnReleased',
'productionYear' => [
        'nullable',
        'digits:4',
        function($attribute, $value, $fail) {
            $status = Input::get('status'); // Retrieve status

            if ($status === 'Released' && $value > now()->year) {
                return $fail($attribute.' is invalid.');
            } elseif ($status === 'UnReleased' && $value > (now()->year + 1)) {
                return $fail($attribute.' is invalid.');
            }
        },
    ],
...
0 голосов
/ 24 сентября 2018

Вы можете использовать правило lte следующим образом:

'productionYear' => 'nullable|digits:4|lte:releaseYear',
'releaseYear'    => 'required|digits:4',

Пожалуйста, обратитесь к документам .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...