首页 > 解决方案 > 如何在 Laravel 中使用多个验证规则作为多个验证请求的基础

问题描述

假设我有 3 种类型的用户,它们都有共同的字段,例如:用户名、电子邮件、密码 .... 等

而且它们每个都有自己的字段,现在我创建添加、更新功能并为这些函数中的每一个创建 FormRequest,这导致我有 6 个 FormRequest,它们都有公共字段的通用规则!

我如何使用例如 StoreUserRequest 并将所有用于存储用户的通用规则放在正确的 FormRequest 中,我希望我能清楚地解释我想要实现的目标。

标签: phplaravelvalidationlaravel-formrequest

解决方案


您可以使用特征来完成此操作,这允许多个类(表单请求)继承指定的共享规则。

创建一个CommonUserRules.phpinapp\Http\Requests目录:

<?php
namespace App\Http\Requests;

trait CommonUserRules
{

    protected function userRules()
    {
        return [
            'name' => 'required',
            'password' => 'required',
        ];
    }
}

这将是可以跨多个表单请求共享的规则。

然后在表单请求中使用特征:

use CommonUserRules;

然后,您可以相应地附加并定义您的独特规则:

 public function rules()
 {
        return array_merge($this->userRules(), [
            'individual_rule' => 'required',
            'another_individual_rule' => 'required',
        ]);
 }

推荐阅读