【问题标题】:How to extend validation form request in Laravel 5.2?如何在 Laravel 5.2 中扩展验证表单请求?
【发布时间】:2017-03-11 13:18:59
【问题描述】:

我有这个验证请求

<?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 + 新字段中的字段的新请求。

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

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

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

public function othermethod(otherCreateUserRequest $request){
}

任何帮助表示赞赏。

也许像这个参考mattstaufer laravel 5.0 form request

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以像这样扩展您的 CreateUserRequest 类:

    <?php
    
    namespace App\Http\Requests;
    
    use CreateUserRequest;
    
    Class OtherCreateUserRequest extends CreateUserRequest {
    
        public function rules()
        {
            return parent::rules() + [
                'additional' => 'rule',
            ];
        }
    }
    

    【讨论】:

    • 我应该创建一个名为 OtherCreateUserRequest 的新文件吗?或者我可以在 CreateUserRequest 文件中创建新类?
    • 在名为OtherCreateUserRequest.php的新文件中创建一个新类
    【解决方案2】:

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

    namespace App\Http\Requests;
    
    Class OtherCreateUserRequest extends CreateUserRequest {
    
        public function rules()
        {
            return array_merge(parent::rules(), [
                'input' => 'more_rules',
            ]);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-23
      • 1970-01-01
      • 2016-09-06
      • 2016-09-02
      • 2023-03-19
      • 2016-03-11
      • 2015-06-09
      • 1970-01-01
      相关资源
      最近更新 更多