【问题标题】:Laravel 5.5 FormRequest custom error messages validation not workingLaravel 5.5 FormRequest 自定义错误消息验证不起作用
【发布时间】:2017-10-09 16:17:33
【问题描述】:

我正在使用以下标准代码来验证使用各种数组的表单。规则已正确实现,但是当使用标准的 'messages()' 方法覆盖时,Laravel 不会接收消息,而只是返回标准的内置消息。

输出

array (size=7)
  0 => string 'The newitems.0.pickup_date field is required.' (length=45)
  1 => string 'The newitems.0.m_f field is required when newitems.0.item type id is present.' (length=77)
  2 => string 'The newitems.1.pickup_date is not a valid date.' (length=47)
  3 => string 'The newitems.0.size field is required when newitems.0.item type id is present.' (length=78)
  4 => string 'The newitems.1.size field is required when items.1.size unknown is not present.' (length=79)
  5 => string 'The newitems.0.width field is required when newitems.0.item type id is present.' (length=79)
  6 => string 'The newitems.1.width field is required when items.1.width unknown is not present.' (length=81)

表单请求

UpdateOrderItemsRequest extends FormRequest{

[...]
    public function rules()
    {

        return [
                'items.*.item_type_id' => 'required_with:items.*.m_f,items.*.pickup_date|numeric',
                'items.*.m_f' => 'required_with:items.*.item_type_id',
                'items.*.pickup_date' => 'required_with:items.*.item_type_id|date|nullable',
                'items.*.size' => 'required_without:items.*.size_unknown|numeric',
                'items.*.width' => 'required_without:items.*.width_unknown|numeric',
                'newitems.*.m_f' => 'required_with:newitems.*.item_type_id',
                'newitems.*.pickup_date' => 'required_with:newitems.*.item_type_id|date',
                'newitems.*.size' => 'required_with:newitems.*.item_type_id|required_without:items.*.size_unknown|numeric',
                'newitems.*.width' => 'required_with:newitems.*.item_type_id|required_without:items.*.width_unknown|numeric'
        ];
    }

    /**
     * Get the error messages for the defined validation rules.
     *
     * @return array
     */
    public function messages()
    {

        return [
            'items.*.item_type_id' => 'An item type is required',
            'items.*.m_f' => 'Gender is required',
            'items.*.pickup_date' => 'A pickup date is required',
            'items.*.size' => 'A size is required',
            'items.*.width' => 'A width is required',
            'newitems.*.m_f' => 'Gender is required',
            'newitems.*.pickup_date' => 'A pickup date is required',
            'newitems.*.size' => 'A size is required',
            'newitems.*.width' => 'A width is required'
        ];
    }
}

我错过了什么愚蠢而明显的东西吗?

【问题讨论】:

    标签: php laravel laravel-5.5


    【解决方案1】:

    自定义验证消息属性必须以验证规则名称结尾。 在您的情况下,您应该使用如下消息功能

    public function messages()
    {
        return [
            'items.*.item_type_id.required_with' => 'An item type is required',
            'items.*.m_f.required_with' => 'Gender is required',
            'items.*.pickup_date.required_with' => 'A pickup date is required',
            'items.*.size.required_without' => 'A size is required',
            'items.*.width.required_without' => 'A width is required',
            'newitems.*.m_f.required_with' => 'Gender is required',
            'newitems.*.pickup_date.required_with' => 'A pickup date is required',
            'newitems.*.size.required_with' => 'A size is required',
            'newitems.*.width.required_with' => 'A width is required'
        ];
    }
    

    【讨论】:

    • 完美!谢谢你。我知道它一定是那样的。我现在可以看到我误读了文档。
    猜你喜欢
    • 2019-04-23
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2017-05-30
    • 2018-12-17
    相关资源
    最近更新 更多