2016-05-23 62 views
0

我建立一個API,當有錯誤所需的輸出如下所示:Laravel,追加值到自定義請求錯誤消息

{ 
    "success": false, 
    "messages" : [ 
     { 
      "field is missing for example", 
      .... 
     } 
    ] 
} 

我有稱爲自定義請求時從控制器如下:

public function store(CoverageValueRequest $request, CoverageValueManager $manager){ 
    $manager->create($request); 
    return response()->json(['success' => $manager->isSuccessful(), 'message' => $manager->getErrorMessage()]); 
} 

如果CoverageValueRequest有錯誤也將通過類似這樣的東西:

[ 
{ 
    "series.0.values.0.cells": [ 
     "The series.0.values.0.cells field is required when none of series.0.values.0.wifi are present." 
    ], 
    "series.0.values.0.wifi": [ 
     "The series.0.values.0.wifi field is required when none of series.0.values.0.cells are present." 
    ] 
} 
] 

如何修改自定義請求的錯誤結果以遵循第一個發佈的結構。

在此先感謝。

回答

2

您只需要執行自己的failedValidation方法。默認值是

protected function failedValidation(Validator $validator) 
{ 
    throw new HttpResponseException($this->response(
     $this->formatErrors($validator) 
    )); 
} 

事實上,你應該離開,而這種方法不變,並實現自己默認的版本:

protected function formatErrors(Validator $validator) 
{ 
    return $validator->getMessageBag()->toArray(); 
} 
+0

謝謝您的回答,我應該看着'FormRequest'類 – Coderji