Laravel登录功能如何为captcha_api验证规则自定义错误提示
解决Laravel验证码校验自定义提示不生效问题
不生效的核心原因:Laravel的验证错误信息存入错误袋时,使用字段名作为键,而非验证规则名。你之前用$errors->has('validation.captcha_api')判断,找不到对应的错误项,自然不会输出提示。
以下是两种可行的实现方案:
方案1:在验证方法中直接传入自定义提示(局部生效,无需修改全局配置)
修改LoginController中的validateLoginWithCaptcha方法,给validate方法传入第二个参数指定自定义提示:
/** * 验证用户登录请求 * * @param \Illuminate\Http\Request $request * @return void * * @throws \Illuminate\Validation\ValidationException */ protected function validateLoginWithCaptcha(Request $request) { $request->validate([ $this->username() => 'required|string', 'password' => 'required|string', 'captcha' => 'required|captcha_api:'. request('key') . ',math' ], [ // 格式:字段名.规则名 => 自定义提示 'captcha.captcha_api' => '验证码输入错误' ]); }
对应Blade的正确写法:
@if($errors->has('captcha')) <div class="alert_container"> <div class="alert alert-danger"> <div class="alert_message_list"> <ul> <!-- 动态输出你在控制器定义的提示 --> <li>{{ $errors->first('captcha') }}</li> <!-- 不需要动态输出也可以直接写固定提示:<li>验证码无效!</li> --> </ul> </div> </div> </div> @endif
方案2:全局修改验证提示文案(所有用到captcha_api规则的场景都生效)
打开语言包文件resources/lang/zh_CN/validation.php(如果使用英文语言包则对应en目录下的同名文件),在配置数组中添加如下项:
'captcha_api' => '验证码输入错误',
配置完成后,所有captcha_api规则验证失败时都会自动返回你设置的提示,Blade写法和方案1一致即可。
内容的提问来源于stack exchange,提问作者B L Praveen
相关产品推荐
相关产品推荐

