Подтвердить что ты не робот

Laravel 4 - как вернуть все сообщения об ошибках проверки для всех полей в виде структуры JSON?

Я обновляюсь от Laravel 3 до Laravel 4. Мое приложение имеет некоторые AJAX-формы, которые отображаются на стороне клиента (т.е. на стороне сервера нет просмотров). Поэтому вместо того, чтобы передавать ошибки проверки в представления с помощью метода сErrors(), я возвращаю объекты проверки достоверности для клиента как структуры JSON.

В Laravel 3 у меня было это:

$validation = Validator::make(Input::all(), $rules);
if($validation->fails())
{
  return json_encode($validation->errors);
}
//else handle task

Но в Laravel 4 сообщения об ошибках защищены:

$validation = Validator::make(Input::all(), $rules);
if($validation->fails())
{
  var_dump($validation->messages());
  return json_encode($validation->messages());
}
//else handle task

var_dump ($ validation- > messages()) возвращает:

object(Illuminate\Support\MessageBag)[333]
  protected 'messages' => 
    array (size=1)
      'delete_confirm_password' => 
        array (size=1)
          0 => string 'The delete confirm password field is required.' (length=46)
  protected 'format' => string ':message' (length=8)

json_encode (сообщения $validation- > ) возвращает

{}

Вопрос: как вернуть все сообщения об ошибках проверки для всех полей в виде структуры JSON в Laravel 4?

4b9b3361

Ответ 1

Я обнаружил, что можно использовать метод toArray():

return json_encode($validation->messages()->toArray()); 

Ответ 2

Просто используйте метод toJson().

return $validator->messages()->toJson();

Ответ 3

Вот еще один способ, позволяющий u добавить в ответ HTTP-код:

return Response::json($validation->messages(), 500);

Ответ 4

Я думаю, что это способ Laravel получить сообщения об ошибках. Есть специальные методы для их получения. Итак, вот как я делаю это:

return Response::json($validator->errors()->getMessages(), 400);

Это производит вывод в следующем формате:

{
"field_name": [
     "Error message"
     ]
}