Laravel 验证错误消息 required_if 无效

Laravel Validation Error Message required_if not working

我正在使用 Laravel 5.2

验证表单

对输入 youtube-embed 使用验证检查 required_if。验证成功进行,但自定义错误消息不起作用。这是代码,也许有人可以看一下。

$messages = [
        'youtube-embed.required_if' => 'Please paste in your youtube embed code',
    ];

$this->validate($request, [
        'youtube-embed'      => 'required_if:youtube,on',
    ]);

这是 laravel 返回的错误消息,而不是我的自定义错误:

The youtube-embed field is required when youtube is on.

试试这个:

$this->validate($request, 
    ['youtube-embed'      => 'required_if:youtube,on',], 
    ['required_if' => 'Please paste in your youtube embed code',]
);

基本上您可以将自定义消息作为验证函数中的第三个参数传递。

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    $rules = [
        'payout_method' => 'required:in,bankTransfer,paypal',
        'paypal_email'  => 'required_if:payment_type,paypal|email',
        'receiver'      => 'required_if:payment_type,bankTransfer|max:45',
        'iban'          => 'required_if:payment_type,bankTransfer|max:45|iban',
        'bic'           => 'required_if:payment_type,bankTransfer|max:15|bic',
    ];

    return $rules;
}

/**
 * Get the error messages for the defined validation rules.
 *
 * @return array
 */
public function messages()
{
    return [
        'payout_method.required'   => trans('validation.attributes.payout_type_required'),
        'paypal_email.required_if' => trans('validation.attributes.paypal_email_required'),
        'paypal_email.email'       => trans('validation.attributes.paypal_email_invalid'),
        'iban.required_if'         => trans('validation.attributes.bank_account_required'),
        'bic.required_if'          => trans('validation.attributes.bank_swift_required'),
        'iban.iban'                => trans('validation.attributes.bank_account_invalid'),
        'bic.bic'                  => trans('validation.attributes.bank_swift_invalid'),
    ];
}

在这种情况下我能做什么? Laravel return 'The paypal email field is required.' 适用于其他领域,仅不适用于 required_if

如果您使用 Request class:

public function messages()
{
    return [
        'youtube-embed.required' => 'Your custom message here.',
    ];
}

适用于 Laravel 7