在Laravel 5请求类中使用Sometimes()函数

时间:2015-03-01 03:34:01

标签: php laravel laravel-5

在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仅在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()方法。我们的想法是避免在控制器上验证代码。

1 个答案:

答案 0 :(得分:2)

好的,我已经使用自定义条件模拟了预期的行为而没有100%确定天气是最佳做法:

$rules = [
    'name' => array('required'),
    'recurrence' => array('required_if:recurring,on'),
];

if ($this->has('recurring')){
    $rules['recurrence'] = $rules['recurrence'] + ['integer', 'min:1'];
}

return $rules;