как использовать И, ИЛИ при проверке laravel - PullRequest
0 голосов
/ 01 мая 2020

Я использую Laravel, и у меня есть валидатор, подобный этому

'color_amount' => 'sometimes',
       'color_amount_number.*' => 'required_with:color_amount,on',
       'specification_amount' => 'sometimes',
       'specification_amount_number.*' => 'required_with:specification_amount,on',
       'description' => 'required|min:10|max:4000',
       'amount' => ['required_unless:specification_amount,on,required_unless:color_amount,on','nullable',
       'regex:/^[ا-یa-zA-Z0-9\-۰-۹ء-ي., ]+$/u','max:999999','min:0'
     ],

для «суммы», которую я хочу использовать ИЛИ, например

required_unless: setting_amount, ИЛИ required_unless: color_amount,

как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Более простой для чтения вариант - использовать обратный вызов:

    $rules = [
        'color_amount' => 'sometimes',
        'color_amount_number.*' => 'required_with:color_amount,on',
        'specification_amount' => 'sometimes',
        'specification_amount_number.*' => 'required_with:specification_amount,on',
        'description' => 'required|min:10|max:4000',
        'amount' => [
            function ($attribute, $value, $fail) use ($request) {
                if (!$value && ($request->specification_amount == 'on' || $request->color_amount == 'on'))
                    $fail($attribute . ' is required.');
            },
            'required_unless:specification_amount,on,required_unless:color_amount,on',
            'nullable',
            'regex:/^[ا-یa-zA-Z0-9\-۰-۹ء-ي., ]+$/u',
            'max:999999',
            'min:0'
        ]
    ];
0 голосов
/ 01 мая 2020

используйте if и elseif и еще, например

$input = Input::only('account'); // dont use all(), ever
$rules = [
    'account' => 'required'
];
if (filter_var($input['account'], FILTER_VALIDATE_EMAIL))
{
    $rules['account'] .= '|exists:users,email';
}
else
{
    $rules['account'] .= '|exists:users,username';
}

$validator = Validator::make($input, $rules);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...