需求:实现按字符串字数进行长度限制。
类似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',
];
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。