Laravel - 特定领域的永久验证

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

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

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


MM们
浏览 184回答 1
1回答

隔江千里

也许一个好的方法是创建一个UsesCommonRules包含名为 的方法的Trait,该方法getCommonRules()将返回一个包含规则的数组。namespace App\Traits;trait UsesCommonRules {    public static function getCommonRules(){        return [            'date' => 'required|date',            'type' => 'in:A,B'        ];    }}然后,您可以将任何其他规则与请求内部的通用规则合并,或者直接在控制器中进行验证(如果您在那里进行验证)。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'        ]);    }}您可以在UsesCommonRulestrait 中创建更多动态函数,例如接收哪些规则应该返回、排除的参数,或者为同名字段合并规则。
打开App,查看更多内容
随时随地看视频慕课网APP