Laravel 7.x 自定义验证 自定义验证信息

需求:实现按字符串字数进行长度限制。
类似max的功能,但是由于自带max 规则是按照字符计算长度,对中文计算存在偏差。我们需要使用mb_strlen来计算中文字数。
【Laravel 7.x 自定义验证 自定义验证信息】在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', ]; }

    推荐阅读