动态FormRequest验证(Laravel)

时间:2017-09-02 17:08:07

标签: php laravel

是否可以在我的函数中创建动态FormRequest验证?请参阅下面的示例代码。

public function rules()
{
    return [
    'firstname' => 'required',
    'middlename' => 'required',
    'lastname' => 'required'
    ];
}

我的意思是我将“Request”参数更改为变量$ formRequest。

我的目标是,我想为单个模型的动态数据集创建不同的验证规则。

如果我能通过其他方式实现这一目标,请告诉我。谢谢!

编辑:

示例场景: 我有一个包含名字,中间名和姓氏字段的表单。

第一条规则:

public function rules()
{
    return [
    'firstname' => 'required',
    'lastname' => 'required'
    ];
}

第二条规则:

ng-model

第二条规则中只需要名字和姓氏。

我只是想知道是否有其他方法可以做到这一点,而不是创建多个商店方法并添加更多路线。

3 个答案:

答案 0 :(得分:2)

FormRequest实例上跳过validate并使用$request方法可以实现此目的。 Laracasts甚至上过课。

public function store(Request $request) {
    $rules = [/*...*/];

    $attributes = $request->validate($rules);

    Model::create($attributes);

    return redirect(url('/'));
}

答案 1 :(得分:2)

您可以创建自定义请求:

php artisan make:request CustomRequest

这将生成此类:

class CustomRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            //
        ];
    }
}

authorize()方法将确定是否可以首先验证请求。

rules()方法将返回当前请求的验证规则。

然后在你的控制器功能中:

public function yourfunction(CustomRequest $request)

答案 2 :(得分:0)

在验证规则中,您可以简单地添加“有时”规则。您可以在这里https://laravel.com/docs/5.7/validation#conditionally-adding-rules

找到它
   public function rules()
{
    return [
    'firstname' => 'required',
    'middlename' => 'sometimes|required',
    'lastname' => 'required'
    ];
}