В laravel 4 я использовал метод some sometimes()
как показано ниже:
$validator = \Validator::make( \Input::all(), array( 'name' => array('required'), 'recurrence' => array('required_if:recurring,on'), ) ); $validator->sometimes('recurrence', 'integer|min:1', function($input) { return $input->recurring == 'on'; });
Замечание integer|min:1
применяется для recurring
только если recurrence
представлена.
В laravel 5 я попытался выполнить проверку как класс запроса:
class CreateProductRequest extends Request { public function authorize(){ return true; } public function rules(){ return [ 'name' => array('required'), 'recurrence' => array('required_if:recurring,on'), ]; } }
Похоже, из класса запроса я не могу вызвать метод sometimes()
. Идея состоит в том, чтобы избежать проверки кода проверки на контроллере.
Хорошо, я подражал ожидаемому поведению, используя обычное условие, не на 100% уверен, что погода – лучшая практика:
$rules = [ 'name' => array('required'), 'recurrence' => array('required_if:recurring,on'), ]; if ($this->has('recurring')){ $rules['recurrence'] = $rules['recurrence'] + ['integer', 'min:1']; } return $rules;