【问题标题】:Laravel Validation Error Message required_if not workingLaravel 验证错误消息 required_if 不起作用
【发布时间】:2021-03-10 20:22:45
【问题描述】:

我正在使用 Laravel 5.2 验证表单

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

$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.

【问题讨论】:

    标签: php laravel laravel-5.2 laravel-validation


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

    • 成功了!非常感谢!在我发布这个问题之前,我试图解决这个问题一个小时。干杯!
    【解决方案2】:
    /**
     * 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 'paypal email field is required.'对于其他领域,这项工作,仅不适用于 required_if

    【讨论】:

      【解决方案3】:

      如果你使用 Request 类:

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

      Laravel 7上工作

      【讨论】:

      • 看起来从 Laravel 8 开始,使用 required_if 可以按预期工作,或者不会像前面提到的那样依赖 required:
      猜你喜欢
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2022-12-08
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      相关资源
      最近更新 更多