Laravel-特定领域的永久验证

时间:2019-08-18 23:35:50

标签: php laravel laravel-5 php-7 laravel-5.8

我的网站上有很多地方,我要求人们指定他们的电话号码或其他类型的数据。每个地方的验证规则都是相同的,并且在每个验证器中一遍又一遍地链接相同的验证规则并不是一件很漂亮的事情,并且不利于将来对验证规则进行更新。考虑一下,例如,当我想更改电话号码验证规则时,我需要在每个表单验证器上进行更改。

我知道我可以使用扩展名添加自定义验证规则,并添加一些正常的php条件以获得所需的验证,但这并不是我想要做的,因为我想使用多个Laravel验证,而不是添加我自己的验证。

有没有办法做到这一点?我浏览了所有Laravel文档,但找不到任何方法。

1 个答案:

答案 0 :(得分:0)

也许一个好的方法是创建一个包含名为UsesCommonRules的方法的getCommonRules()特性,该方法将返回包含规则的数组。

namespace App\Traits;

trait UsesCommonRules 
{
    public static function getCommonRules(){
        return [
            'date' => 'required|date',
            'type' => 'in:A,B'
        ];
    }
}

然后,您可以将其他任何规则与通用规则合并到请求中,或者直接在Controller中合并(如果您要在其中进行验证)。

namespace App\Http\Requests;

use App\Traits\UsesCommonRules;
use Illuminate\Foundation\Http\FormRequest;

class MyRequest extends FormRequest
{
    use UsesCommonRules;

    public function rules()
    {
        return array_merge(self::getCommonRules(), [
            'city_id' => 'required'
        ]);
    }
}

您可以在UsesCommonRules特性中创建更多动态函数,例如接收有关应返回,排除哪些规则的参数,或为具有相同名称的字段组合规则。