Anonymous
Laravel проверяет индексный массив объекта
Сообщение
Anonymous » 23 дек 2024, 15:55
Можно ли как-нибудь проверить индексный массив объектов в laravel с помощью валидатора?
Вот данные моего сообщения:
Код: Выделить всё
[
{
"order_id": 601696,
"is_delay": 0,
"ship_date": null,
"times": 1,
"warehouse_id": 237,
"ship_type": 1,
"package": [
{
"sku": "JD-XL102",
"order_item_id": 772447,
"qty": 2
}
]
},
{
"order_id": 601696,
"is_delay": 0,
"ship_date": null,
"times": 1,
"warehouse_id": 251,
"ship_type": 1,
"package": [
{
"sku": "JD-D16",
"order_item_id": 772447,
"qty": 1
},
{
"sku": "JD-D16-GC",
"order_item_id": 772448,
"qty": 1
}
]
}
]
Тогда я хочу проверить это следующим образом:
Код: Выделить всё
public function rules()
{
return [
'*.*.order_id' => 'required|integer',
'*.*.is_delay' => 'required|boolean',
'*.*.ship_date' => 'nullable|datetime',
'*.*.times' => 'required|integer|min:1',
'*.*.warehouse_id' => 'required|integer',
'*.*.ship_type' => 'required|integer',
'*.*.package' => 'required|array',
'*.*.package.*.sku' => 'required|string',
'*.*.package.*.qty' => 'required|integer|min:1',
];
}
Однако это не работает.
Я знаю, что могу добавить поле префикса, чтобы исправить это, но я просто хочу знать, поддерживает ли laravel индексный массив для проверки без префиксного ключа ?
Код: Выделить всё
public function rules()
{
return [
'row' => 'required|array',
'row.*.order_id' => 'required|integer',
'row.*.is_delay' => 'required|boolean',
'row.*.ship_date' => 'nullable|datetime',
'row.*.times' => 'required|integer|min:1',
'row.*.warehouse_id' => 'required|integer',
'row.*.ship_type' => 'required|integer',
'row.*.package' => 'required|array',
'row.*.package.*.sku' => 'required|string',
'row.*.package.*.qty' => 'required|integer|min:1',
];
}
Версия PHP: v7.4.33
Версия Laravel: v6.20.44
Подробнее здесь:
https://stackoverflow.com/questions/793 ... -of-object
1734958505
Anonymous
Можно ли как-нибудь проверить индексный массив объектов в laravel с помощью валидатора? Вот данные моего сообщения: [code][ { "order_id": 601696, "is_delay": 0, "ship_date": null, "times": 1, "warehouse_id": 237, "ship_type": 1, "package": [ { "sku": "JD-XL102", "order_item_id": 772447, "qty": 2 } ] }, { "order_id": 601696, "is_delay": 0, "ship_date": null, "times": 1, "warehouse_id": 251, "ship_type": 1, "package": [ { "sku": "JD-D16", "order_item_id": 772447, "qty": 1 }, { "sku": "JD-D16-GC", "order_item_id": 772448, "qty": 1 } ] } ] [/code] Тогда я хочу проверить это следующим образом: [code]public function rules() { return [ '*.*.order_id' => 'required|integer', '*.*.is_delay' => 'required|boolean', '*.*.ship_date' => 'nullable|datetime', '*.*.times' => 'required|integer|min:1', '*.*.warehouse_id' => 'required|integer', '*.*.ship_type' => 'required|integer', '*.*.package' => 'required|array', '*.*.package.*.sku' => 'required|string', '*.*.package.*.qty' => 'required|integer|min:1', ]; } [/code] Однако это не работает. Я знаю, что могу добавить поле префикса, чтобы исправить это, но я просто хочу знать, поддерживает ли laravel индексный массив для проверки без префиксного ключа ? [code]{ "rows": [ {...} ] } [/code] [code]public function rules() { return [ 'row' => 'required|array', 'row.*.order_id' => 'required|integer', 'row.*.is_delay' => 'required|boolean', 'row.*.ship_date' => 'nullable|datetime', 'row.*.times' => 'required|integer|min:1', 'row.*.warehouse_id' => 'required|integer', 'row.*.ship_type' => 'required|integer', 'row.*.package' => 'required|array', 'row.*.package.*.sku' => 'required|string', 'row.*.package.*.qty' => 'required|integer|min:1', ]; } [/code] Версия PHP: v7.4.33 Версия Laravel: v6.20.44 Подробнее здесь: [url]https://stackoverflow.com/questions/79302819/laravel-validate-index-array-of-object[/url]