需要:实现按字符串字数进行长度限度。
相似 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',
];
}