You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:24:03