Laravel中Validator的验证扩展

虽然Laravel提供一套包括正则匹配在内的完善的验证机制,但你一定会遇到使用规则解决不了的验证,比如数据库验证,这时需要用到Validator的验证扩展。

(1)使用静态方法:Validator::extend
(2)使用对象调用:$validator->addExtension

下面是验证HTTP提交的商品分类信息的例子。

use \Illuminate\Http\Request;
use App\Exceptions\MyValidationException;
use App\GoodsCategory;

class GoodsValidator
{

    public static function validate(Request $request, $final = false)
    {
        $messages = [
            //'category_id.required' => ':attribute 输入不正确!',
            'category_id.required' => '抱歉,您输入的商品分类信息为空',
            'category_id.min' => '抱歉,您输入的商品分类信息长度有误',
            'category_id.category_id_check' => '抱歉,您输入的商品分类信息不存在',
        ];

        $rules = [
            'category_id' => 'required|min:4|category_id_check',
        ];

        Validator::extend('category_id_check', function($attribute, $value, $parameters) {
            return GoodsCategory::where('category_id', $value)->exists();
        });

        $validator = Validator::make($request->all(), $rules, $messages);
        /*
        $validator->addExtension('category_id_check', function($attribute, $value, $parameters) {
            return GoodsCategory::where('category_id', $value)->exists();
        });
        */
        if ($validator->fails()) {
            $messageBag = $validator->messages();
            $messageArr = $messageBag->getMessages();
            print_r($messageArr);
        }
    }

}

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/19/laravel-validator-extension/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Laravel中Validator的验证扩展
虽然Laravel提供一套包括正则匹配在内的完善的验证机制,但你一定会遇到使用规则解决不了的验证,比如数据库验证,这时需要用到Validator的验证扩展。 (1)使……
<<上一篇
下一篇>>
文章目录
关闭
目 录