Laravel Пользовательская проверка ошибок JSON-объект ответа на массив - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать API для формы регистрации, если пользователь не заполняет обязательное поле. Ошибка показа валидатора в формате объекта, но i требуется ответ json в формате массива.

$validator = Validator::make($request->all(), [ 
    'name' => 'required', 
    'mobile' => 'required', 
    'address' => 'required', 
]);
if ($validator->fails()) { 
    return response()->json(['error'=>$validator->errors()], 401);            
}

Токовый выход

 {
    "error": {
        "name": [
            "The name field is required."
        ],
        "mobile": [
            "The mobile field is required."
        ],
        "address": [
            "The addressfield is required."
        ]
    }
}

Ожидаемый результат

{
  "error": [
      "The name field is required.",
      "The mobile field is required.",
      "The address field is required."
  ]
}

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Правильный ответ такой:

$err = array();

        foreach ($validator->errors()->toArray() as $error)  {
            foreach($error as $sub_error){
                array_push($err, $sub_error);
            }
        }
        return ['errors'=>$err];

добавлен внутренний foreach, потому что, возможно, для входа не выполнено несколько условий проверки (например: пароль равен too short & too weak).

и цикл ответа for от Mayank Pandeyz не будет повторяться, потому что пока мы не добавим toArray() в конец $validator->errors().

0 голосов
/ 28 августа 2018

Чтобы получить ожидаемый результат, повторите цикл $validator->errors() с использованием цикла foreach(), поместите все значения в массив и верните этот массив, например:

$err = array();
foreach ($validator->errors() as $error)
{
    array_push($err, $error);
}

return response()->json(['error'=>$err], 401);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...