Используя Laravel, есть ли способ выполнить проверку для одного вызова ajax с данными для нескольких моделей?
Предполагая, что в JSON можно одновременно разместить несколько наборов данных одной модели, можно вставить их с помощью функции Eloquent Model::create(). Однако в моем случае мне также необходимо проверить эти данные.
Validator принимает только объект Request в качестве входных данных, и, насколько я видел, я не могу создать новый экземпляр Request только с одной моделью.
Предполагая, что это будут входные данные (JSON), а index - это значение, которое браузер должен знать, какие данные принадлежат какому элементу (поскольку у них нет уникального идентификатора, назначенного в точке создания).
[
{
"index" : 1,
"name" : "Item 1",
"value" : "Some description"
},
{
"index" : 2,
"name" : "Item 2",
"value" : "Something to describe item 2"
},
(and so on)
]
Каждый объект в корневом массиве должен проходить через один и тот же валидатор. Правила этого определены в Model::$rules (публичный статический массив).
Будет ли способ запустить валидатор для каждого элемента и, возможно, зафиксировать ошибки для каждого элемента?
1 ответ
Вы можете использовать Validator
для ручной проверки:
...
use Validator;
...
$validator = Validator::make(
json_decode($data, true), // where $data contains your JSON data string
[
// List your rules here using wildcard syntax.
'*.index' => 'required|integer',
'*.name' => 'required|min:2',
...
],
[
// Array of messages for validation errors.
...
],
[
// Array of attribute titles for validation errors.
...
]
);
if ($validator->fails()) {
// Validation failed.
// $validator->errors() will return MessageBag with what went wrong.
...
}
Вы можете прочитать больше о проверке массивов здесь.