2017-10-09 9 views
2

次の標準コードを使用して、さまざまな配列を使用するフォームを検証しています。ルールは正しく実装されていますが、標準の 'messages()'メソッドオーバーライドを使用すると、Laravelはメッセージを受け取ることはありませんが、単純に組み込みの標準メッセージを返します。Laravel 5.5 FormRequestカスタムエラーメッセージの検証が機能しない

出力

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) 

FormRequest

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' 
     ]; 
    } 
} 

ダムと明らかに何かが私が欠けていることはありますか?

答えて

4

カスタム検証メッセージ属性は、検証ルール名で終了する必要があります。 あなたの場合、次のようなメッセージ機能を使用する必要があります

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' 
    ]; 
} 
+0

完璧!ありがとうございました。私はそれがそれのようなものでなければならないことを知っていた。私はドキュメントを間違って読んでいたことがわかりました。 – fred2

+1

問題はない、間違って人を強く学ぶ –

関連する問題