Laravel表单验证:合并姓氏与名字验证最大字符数
Laravel实现姓名组合长度验证方案
要实现first_name与last_name合并后的最大字符数验证,你可以利用Laravel验证器的after回调功能,在默认规则验证完成后添加自定义逻辑,具体实现如下:
修改后的完整验证代码
$validator = Validator::make($request->all(), [ 'first_name' => ['required'], 'last_name' => ['required'], 'phone' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8'], ]); // 添加姓名组合长度验证逻辑 $validator->after(function ($validator) use ($request) { // 若需按字符数(支持中文等多字节字符)计算,使用mb_strlen;按字节数则用strlen $totalLength = mb_strlen($request->first_name) + mb_strlen($request->last_name); // 替换50为你实际需要的最大字符数 if ($totalLength > 50) { $validator->errors()->add('full_name', '姓名组合后的总长度不能超过50个字符'); } }); if ($validator->fails()) { return response()->json(['message' => 'Errors!','errors'=>$validator->errors()], 500); }else{ return response()->json(['message' => 'User registered successfully'], 201); }
关键说明
- 验证时机:
after回调会在所有默认规则(比如required)验证通过后执行,确保first_name和last_name都存在,避免空值计算错误。 - 长度计算选择:
strlen:按字节数计算,适合纯英文场景;mb_strlen:按字符数计算,支持中文、日文等多字节字符,需确保PHP开启了mbstring扩展。
- 错误信息字段:示例中错误信息绑定到
full_name字段,你也可以根据需求将错误添加到first_name或last_name字段,比如$validator->errors()->add('first_name', '姓名组合长度超限')。
内容的提问来源于stack exchange,提问作者dev radwa
相关产品推荐
相关产品推荐

