在 Laravel 5 请求 class 中使用 sometimes() 函数
Use sometimes() function in Laravel 5 request class
在laravel 4中,我使用了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
仅在出现 recurrence
时适用于 recurring
。
在laravel 5中,我尝试将验证实现为请求class:
class CreateProductRequest extends Request {
public function authorize(){
return true;
}
public function rules(){
return [
'name' => array('required'),
'recurrence' => array('required_if:recurring,on'),
];
}
}
似乎来自请求 class 我无法调用 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;
在laravel 4中,我使用了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
仅在出现 recurrence
时适用于 recurring
。
在laravel 5中,我尝试将验证实现为请求class:
class CreateProductRequest extends Request {
public function authorize(){
return true;
}
public function rules(){
return [
'name' => array('required'),
'recurrence' => array('required_if:recurring,on'),
];
}
}
似乎来自请求 class 我无法调用 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;