Проверка массива Laravel обнуляет значения - PullRequest
2 голосов
/ 18 марта 2019

Я хочу проверить значения массива объектов в Laravel, которые я передаю через запрос со стороны клиента (в кодировке).

Прежде всего, я декодирую значения, переданные через запрос, затем проверяю, чтобы убедиться, что он нулевой или нет.

Это мой код

$request->request->set('shopping_list', array_map(function ($arr) {
    return json_decode($arr);
}, $request->shopping));

$validator = Validator::make($request->toArray(), [
    'shopping_list' => ['required'],
    'shopping_list.*' => ['required'],
    'shopping_list.*.store' => ['required'],
    'shopping_list.*.item' => ['required'],
    'shopping_list.*.quantity' => ['required'],
    'shopping_list.*.brand' => ['required'],
    'shopping_list.*.size' => ['required'],
]);

if (count($validator->errors()) > 0) {
    return Response::json($validator->errors()->first(), 422);
}

Неожиданно сервер не возвращает сообщений об ошибках. Когда я возвращаю $request->all() или $request->toArray(), после завершения проверки я получаю значения следующим образом

Nullified Response

Если я верну его до проверки, я получу ответ, подобный этому

Response from the server

Как я могу исправить эту проблему и проверить элементы?

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Согласно моему предложению, при использовании json_decode вы можете принудительно вернуть строку JSON в виде ассоциативного массива, передав true в качестве второго параметра. Вы пытались запустить проверочные флаги, созданные для массивов на объектах.

Примечание: toArray не преобразует ваш JSON в массивы или объекты, он просто преобразует все свойства, переданные от объекта ($request->my_input), в ассоциированный массив.

0 голосов
/ 18 марта 2019

Как "не очень хороший совет". Вы можете вызвать $request->toArray() (и сохранить данные в некоторой переменной) до Validator::make(....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...