关于laravel:Laravel-7x-自定义验证-自定义验证信息

需要:实现按字符串字数进行长度限度。
相似max的性能,然而因为自带max 规定是依照字符计算长度,对中文计算存在偏差。咱们须要应用mb_strlen来计算中文字数。

在request 中批改 rules办法即可(应用 Validator::extend() 办法)。

参数1:规定名
参数2:回调办法
参数3:验证信息
Validator::extend('mb_max', 
    function ($attribute, $value, $parameters, $validator), 
    $message);
public function rules()
    {
        $mbMaxSize = 40;//字数限度
        \Validator::extend('mb_max', function ($attribute, $value, $parameters, $validator) {
            \Log::info('$parameters', [$value, $parameters[0], mb_strlen($value)]);
            return (mb_strlen($value) <= intval($parameters[0]));
        }, ':attribute 不能超过' . $mbMaxSize . '个字');
        
        return [
            'name' => 'required|min:1|mb_max:' . $mbMaxSize,
            'department' => 'required',
            'detail' => 'required|max:3000',
        ];
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理