#arrays #laravel #loops #nested #laravel-blade
#массивы #laravel #циклы #вложенный #laravel-blade
Вопрос:
Как я могу получить доступ к данным вложенного массива в файле блейда laravel?
Мой массив:
{
"id": 2271,
"amt_item": "PS839137",
"image_name": "PS839137.jpg",
"company": "01",
"division": "PAP",
"color_description": "VINTAGE SAGE",
"item_description": "SHT SLV CRISSCROSS TEE",
"season_code": "SP18",
"season_name": null,
"season_description": null,
"wholesale_price": ".00",
"retail_price": ".00",
"color_code": "VINSA",
"vendor_code": "DDJJG",
"vendor_desc": "JIANGYIN CITY JINGE GARMENT COMPANY",
"color_size_grid": {
"CORA": {
"1": {
"size_description": "X SMALL",
"on_hand": "0"
},
"3": {
"size_description": "MEDIUM",
"on_hand": "0"
},
"5": {
"size_description": "X LARGE",
"on_hand": "0"
},
"4": {
"size_description": "LARGE",
"on_hand": "0"
},
"2": {
"size_description": "SMALL",
"on_hand": "0"
}
},
"CHA": {
"3": {
"size_description": "MEDIUM",
"on_hand": "0"
},
"4": {
"size_description": "LARGE",
"on_hand": "0"
},
"1": {
"size_description": "X SMALL",
"on_hand": "0"
},
"5": {
"size_description": "X LARGE",
"on_hand": "0"
},
"2": {
"size_description": "SMALL",
"on_hand": "0"
}
},
"VINSA": {
"5": {
"size_description": "X LARGE",
"on_hand": "0"
},
"3": {
"size_description": "MEDIUM",
"on_hand": "0"
},
"4": {
"size_description": "LARGE",
"on_hand": "0"
},
"2": {
"size_description": "SMALL",
"on_hand": "0"
},
"1": {
"size_description": "X SMALL",
"on_hand": "0"
}
},
"VINDE": {
"5": {
"size_description": "X LARGE",
"on_hand": "0"
},
"4": {
"size_description": "LARGE",
"on_hand": "0"
},
"1": {
"size_description": "X SMALL",
"on_hand": "0"
},
"3": {
"size_description": "MEDIUM",
"on_hand": "0"
},
"2": {
"size_description": "SMALL",
"on_hand": "0"
}
}
}
}
Я передаю этот массив в свой файл блейда laravel в виде элементов и получаю доступ к связанным данным. Но мне сложно получить доступ к данным внутри массива color_size_grid. Как я могу напечатать все size_description внутри цикла foreach? Заранее спасибо.
Что я делаю в моем блейд-файле:
@foreach ($items as $item)
<div class="print-block" style="page-break-inside: avoid;">
<div class="print-block__img">
<img src="" alt="">
</div>
<div class="print-block__details">
<h3>{{$item['item_description']}}</h3>
<div class="code">{{$item['amt_item']}}</div>
<div class="price">
<strong>W:</strong> USD {{$item['wholesale_price']}} | <strong>R:</strong> USD {{$item['retail_price']}}
</div>
<table class="other-info">
<tr>
<td>
<strong>Sizes: </strong>
</td>
<td></td>
</tr>
<tr>
<td>
<strong>Colors: </strong>
</td>
<td></td>
</tr>
</table>
</div>
</div>
@endforeach
Что касается размеров, теперь я хочу напечатать все size_descriptions внутри массива color_size_grid.
Для каждого цвета доступны размеры, как показано ниже:
Sizes:
CORA - X SMALL, MEDIUM, X LARGE, LARGE, SMALL
CHA - ...........
Ответ №1:
@foreach ($items as $item)
<div class="print-block" style="page-break-inside: avoid;">
<div class="print-block__img">
<img src="" alt="">
</div>
<div class="print-block__details">
<h3>{{ $item['item_description'] }}</h3>
<div class="code">{{ $item['amt_item'] }}</div>
<div class="price">
<strong>W:</strong> USD {{ $item['wholesale_price'] }} | <strong>R:</strong> USD {{ $item['retail_price'] }}
</div>
<table class="other-info">
<tr>
<td>
<strong>
Sizes:
<?php
$uniqueSizes = [];
?>
@foreach ($item['color_size_grid'] as $color => $sizes)
@foreach ($sizes as $size)
@if (isset($uniqueSizes[$size['size_description']]))
@continue
@endif
{{ $size['size_description'] }}
{{ ($loop->last ? '' : ',') }}
<?php
$uniqueSizes[$size['size_description']] = true;
?>
@endforeach
@endforeach
</strong>
</td>
<td></td>
</tr>
<tr>
<td>
<strong>
Colors:
@foreach ($item['color_size_grid'] as $color => $sizes)
{{ $color }}:
@foreach ($sizes as $size)
{{ $size['size_description'] }}
{{ ($loop->last ? '' : ',') }}
@endforeach
@endforeach
</strong>
</td>
<td></td>
</tr>
</table>
</div>
</div>
@endforeach
Комментарии:
1. спасибо за этот ответ. но я получаю сообщение об ошибке, подобное этому здесь: «Пытаюсь получить свойство ‘color_size_grid’ не-объекта
2. не могли бы вы привести мне пример, пожалуйста, поскольку я новичок в laravel
3. Я изменил его в ответе
4. да, теперь это работает, большое вам спасибо :), могу ли я изменить его, чтобы отображать размеры для каждого цвета?
5. отлично, да, вы можете изменять все, что захотите 😉