2016-09-13 3 views
0

Я хочу, чтобы пользовательская проверка json-ответа для API. Сейчас по умолчанию что-то сообщение об ошибке, как этотпользовательский формат ошибки проверки laravel 5.2

{"password":["The password must be at least 6 characters."],"type":["The type field is required."]} 

Я хочу

{flag:0,msg:"The password must be at least 6 characters.",data:{"password":["The password must be at least 6 characters."],"type":["The type field is required."]}} 

И я хочу этот формат только мой REST API. Как я могу это достичь.

+0

Вы используете ** FormRequest ** или простой ** Validator **? –

+0

Я использую ** Illuminate \ Http \ Request **, а затем ** $ this-> validate ($ this-> request, $ rules); ** – user1673762

+0

Короче говоря, я хочу настроить объект MessageBag, как указано выше. – user1673762

ответ

1

Проверка пожаров HttpResponseException, который мы можем поймать и действовать на

Выполните следующие действия в вашем действии контроллера

public function abc(Request $request) 
{ 
    //using try catch to catch the validation exception thrown 
    try{ 
     $this->validate($request, $rules); 
    }catch(\Illuminate\Http\Exception\HttpResponseException $e){ 

     //fetching the error messages 
     $messages = $e->getResponse()->getSession()->get('errors')->getMessages(); 

     //or you can use $messages = session()->get('errors')->getMessages(); 

     $messages = collect($messages); 
     $content = [ 
      'flag' => 0, 
      'data' => $messages->toArray(), 
      'msg' => $messages->first()[0] 
     ]; 

     return response()->json($content, 400); 
    } 

} 
+0

это будет работать, но я должен добавить этот код на каждую новую службу моего API, или я могу обработать это исключение в «Исключениях \ Handler.php». Я нашел альтернативное решение, пожалуйста, проверьте мои ответы. – user1673762

2

я нашел решение.

Я chnaged мой родительский контроллер и добавил formatValidationErrors метод. Вот он

+0

Да, я проверил, это сработает –