如何在Laravel 5.2中扩展验证表单请求?

时间:2016-10-28 15:42:07

标签: php laravel

我有此验证请求

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

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

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
          'email' => 'required|email|unique:users',
          'password' => 'required|confirmed|min:6',
          'full_name' => 'required',
          'address' => 'required',
          'phone' => 'required|numeric',
          'family_name' => 'required',
          'family_address' => 'required',
          'family_phone' => 'required|numeric',
          'idcard' => 'required|image',
        ];
    }
}

我可以在我的控制器方法中使用它

public function register(CreateUserRequest $request){
}

现在我有其他形式需要验证,但表单有附加字段。

我知道,我可以在CreateUserRequest + new field中创建包含字段的新Request。

但我认为这是不好的方式。

那么我如何扩展CreateUserRequest并添加其他字段?

所以我可以在其他控制器方法中使用

public function othermethod(otherCreateUserRequest $request){
}

任何帮助表示感谢。

可能类似于此参考mattstaufer laravel 5.0 form request

2 个答案:

答案 0 :(得分:2)

您可以像这样扩展CreateUserRequest类:

<?php

namespace App\Http\Requests;

use CreateUserRequest;

Class OtherCreateUserRequest extends CreateUserRequest {

    public function rules()
    {
        return parent::rules() + [
            'additional' => 'rule',
        ];
    }
}

答案 1 :(得分:0)

我没有尝试过,但您可以继承Base Request Class并将其父级的规则方法称为:

namespace App\Http\Requests;

Class OtherCreateUserRequest extends CreateUserRequest {

    public function rules()
    {
        return array_merge(parent::rules(), [
            'input' => 'more_rules',
        ]);
    }
}