Laravel 5.5.14中如何自定义「不能邀请自己」的验证错误提示?
解决Laravel请求验证自定义「cannot be self」错误提示的问题
Hey there! 我来帮你搞定这个自定义错误提示的需求~
在Laravel的Form Request类(也就是你创建的CreateInviteRequest)里,除了rules()方法,我们可以通过添加messages()方法来覆盖默认的错误提示信息。具体操作如下:
- 在
CreateInviteRequest类中新增messages()方法
这个方法返回一个数组,键名的格式是字段名.规则名,对应的值就是你想要的自定义错误文本。针对你用的not_in规则,我们需要设置invite_user.not_in对应的提示:
public function messages() { return [ 'invite_user.not_in' => 'cannot be self', ]; }
- 完整的
CreateInviteRequest类示例
把它和你现有的rules()方法放在一起,大概是这样:
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Auth; class CreateInviteRequest extends FormRequest { /** * 确定用户是否有权限进行此请求。 * * @return bool */ public function authorize() { // 根据你的需求调整这里的权限逻辑,默认是false,记得改成true或者对应的权限判断 return true; } /** * 获取适用于请求的验证规则。 * * @return array */ public function rules() { return [ 'invite_user' => [ 'numeric', 'exists:users,id', 'not_in:'.Auth::guard('api')->user()->id ] ]; } /** * 获取自定义验证错误信息。 * * @return array */ public function messages() { return [ 'invite_user.not_in' => 'cannot be self', ]; } }
这样修改之后,当用户尝试提交自己的ID作为invite_user时,就会显示你想要的「cannot be self」错误提示,而不是Laravel默认的「The selected invite_user is invalid.」啦~
对了,顺便提一句,authorize()方法默认返回false,记得根据你的实际需求调整权限判断,不然请求会直接被拒绝哦😉
内容的提问来源于stack exchange,提问作者Blagoh
相关产品推荐
相关产品推荐

