Laravel L5.5动态请求验证依赖于变量

时间:2018-01-07 09:16:06

标签: php laravel validation laravel-5

在我的控制器中,我有类似的东西:

switch ($type)
    {
        case '1':
            $validation_rules = [
                'a' => 'required',
                'b' => 'required',];
            break;
        case '2':
            $validation_rules = [
                'd' => 'required',
                'j' => 'nullable|numeric',];
            break;
        case '3':
            $validation_rules = [
                't1.x' => 'required|numeric',
                't1.y' => 'required|numeric',];
            break;
    }

$request->validate($validation_rules);

但我不喜欢这样,因为它会使我的控制器大量增加。 我正在寻找一种方法来使用请求验证。

这样的事情将成为我的目标:

public function store(XXRequest $request)

并将验证的逻辑放在里面。

1 个答案:

答案 0 :(得分:5)

创建一个新的请求文件:

<input type="text" id="datepicker">

将逻辑放入php artisan make:request SomeRequest 方法:

rules()

然后使用它:

public function rules()
{
    switch (request('type'))
        {
            case '1':
                $validation_rules = [
                    'a' => 'required',
                    'b' => 'required',];
                break;
            case '2':
                $validation_rules = [
                    'd' => 'required',
                    'j' => 'nullable|numeric',];
                break;
            case '3':
                $validation_rules = [
                    't1.x' => 'required|numeric',
                    't1.y' => 'required|numeric',];
                break;
        }

    return $validation_rules;
}

https://laravel.com/docs/5.5/validation#form-request-validation