Как проверить, что поле должно быть истинным, если другое поле является ложным - PullRequest
0 голосов
/ 14 декабря 2018

Ниже приведен фрагмент моей проверки в настоящее время:

        'independent_financial_advisor' => 'required|boolean',
        'understand_objective' => 'required|boolean',
        'confirm_objective' => 'required|boolean',
        'understand_term_held' => 'required|boolean',
        'tax_relief' => 'required|boolean',

Мне нужно проверить, что когда independent_financial_advisor имеет значение false, остальные 4 поля ниже должны быть истинными.Я не смог найти ни одного правила Laravel, которое могло бы сделать это, поэтому я подумал об использовании замыкания для создания собственного правила.

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

Как лучше всего это сделать?Спасибо

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Я добавил пользовательское правило проверки с именем true_if_reference_is_false и передал ему параметр, который independent_financial_advisor.

Итак, проверка выглядит так:

$this->validate($request, [
    'independent_financial_advisor' => 'required|boolean',
    'understand_objective' => 'required|boolean|true_if_reference_is_false:independent_financial_advisor',
    'confirm_objective' => 'required|boolean|true_if_reference_is_false:independent_financial_advisor',
    'understand_term_held' => 'required|boolean|true_if_reference_is_false:independent_financial_advisor',
    'tax_relief' => 'required|boolean|true_if_reference_is_false:independent_financial_advisor'
]);

Вам необходимоопределите это правило проверки в App\Providers\AppServiceProvider.php Import Facade Validator.

use Illuminate\Support\Facades\Validator;

И определите правило в методе boot:

Validator::extend('true_if_reference_is_false', function ($key, $value, $parameters, $validator) {
    $request = request();
    $keyReference = $parameters[0];
    if ($request->has($parameters[0]) && $request->$keyReference == false)
        return (bool)$request->$key;
    else
        return true;
});

Надеюсь, это поможет:)

0 голосов
/ 14 декабря 2018
'independent_financial_advisor' => 'required|boolean',
'understand_objective' => 'boolean|required_if:independent_financial_advisor,0,false',
'confirm_objective' => 'boolean|required_if:independent_financial_advisor,0,false',
'understand_term_held' => 'boolean|required_if:independent_financial_advisor,0,false',
'tax_relief' => 'boolean|required_if:independent_financial_advisor,0,false',

Для более подробных правил проверки, смотрите документацию по Laravel здесь https://laravel.com/docs/5.7/validation#rule-required-if

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