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

如何在Laravel Precognition中设置自定义错误提示信息?

在Laravel Precognition中设置自定义错误消息

Laravel Precognition 底层复用了框架的验证系统,所以自定义错误消息的方式和常规验证高度一致,主要有两种常用实现方式:

1. 使用表单请求类(推荐)

如果验证逻辑复杂,建议创建专门的表单请求类,在类中定义规则和自定义消息,Precognition会自动识别并使用这些消息。

创建表单请求类(比如 RegisterRequest):

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class RegisterRequest extends FormRequest
{
    public function authorize()
    {
        return true; // 根据实际业务设置权限逻辑
    }

    public function rules()
    {
        return [
            'username' => 'required,unique:Userlogin,username',
            'password' => 'required',
            'email'    => 'required,unique:Userlogin,email',
        ];
    }

    public function messages()
    {
        return [
            'required' => 'The :attribute field is required.',
            'unique'   => ':attribute is already used',
            // 也可针对特定属性的特定规则单独设置消息
            'username.required' => 'Username cannot be empty.',
        ];
    }
}

在控制器中使用Precognition:

use App\Http\Requests\RegisterRequest;

public function register(RegisterRequest $request)
{
    // 若路由配置了Precognition中间件会自动触发验证
    // 也可手动调用:
    $request->precognize();

    // 后续业务逻辑
}

2. 控制器内直接定义规则和消息

如果验证逻辑简单,可在控制器方法中直接调用 precognize 方法,同时传入规则和自定义消息数组,用法和 validate 方法一致:

public function register(Request $request)
{
    $request->precognize(
        [
            'username' => 'required,unique:Userlogin,username',
            'password' => 'required',
            'email'    => 'required,unique:Userlogin,email',
        ],
        [
            'required' => 'The :attribute field is required.',
            'unique'   => ':attribute is already used',
        ]
    );

    // 后续业务逻辑
}

补充说明

两种方式都支持使用:attribute、:value等验证占位符,语法和常规验证完全相同。Precognition会在预验证阶段返回这些自定义错误消息,前端可直接接收展示。

内容的提问来源于stack exchange,提问作者Zain Hibattulloh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:39:57