使用 Rule::in 作为验证时如何添加自定义 Laravel 错误消息

How to add a custom Laravel error message when using Rule::in as validation

我正在使用一系列机构名称验证 Laravel 中的 select 下拉菜单。我正在使用 Rule::in() 来执行此操作。验证工作正常,我收到了标准错误消息 'The selected agency-name is invalid'。我想将它编辑成一条自定义错误消息,但我很难像以前那样做。这是我的代码。

$agencies = Session::get('config.agency-names');
    $agency_names = array();
    for ($x = 0; $x < count($agencies['Agencies']); $x++) {
        $name = $agencies['Agencies'][$x]["AgencyName"];
        array_push($agency_names, $name);
        array_push($agency_names, '');
    }

$request->validate([
        'referral'    => 'required',
        'agency-name' => ['required_if:referral,no', Rule::in($agency_names)],
        'password'    => 'required|min:6|regex:/[A-Z]/|regex:/[a-z]/|regex:/[0-9]/|confirmed'], [
        // New custom agency name message
        agency-name.Rule::in(agency_names) => 'NEW MESSAGE (DOESN\'T WORK)',
        // Custom password messages.
        'password.confirmed' => 'Confirmation password did not match, please try again.',
        'password.regex'     => 'Password does not meet criteria, Please try again.',
        'password.min'       => 'Password does not meet criteria, please try again.',
]);

validate 方法中,您有两个参数,一个用于字段输入,另一个用于验证消息。

根据具有验证类型的验证规则调用验证消息,使用 Rule 对象不会改变这一点。

在您的代码中,您必须添加 'agency-name.in',就像您使用 in 验证时一样

$request->validate([
        'referral'    => 'required',
        'agency-name' => ['required_if:referral,no', Rule::in($agency_names)],
        'password'    => 'required|min:6|regex:/[A-Z]/|regex:/[a-z]/|regex:/[0-9]/|confirmed'], [
        // New custom agency name message
       'agency-name.in' => 'NEW MESSAGE ',
        // Custom password messages.
        'password.confirmed' => 'Confirmation password did not match, please try again.',
        'password.regex'     => 'Password does not meet criteria, Please try again.',
        'password.min'       => 'Password does not meet criteria, please try again.',
]);