{{-- Вывод значений полей объекта по объявлению компонента. Универсальный шаблон нужен компонентам из конструктора: тип, собранный в админке, обязан что-то показывать на сайте сразу, не дожидаясь, пока кто-то напишет ему Blade. Как только вёрстка нужна своя, модуль или тема объявляет собственный шаблон, и этот перестаёт использоваться. Пара «подпись — значение» размечается тем же словарём, что и таблица характеристик товара (kz-props): базовому слою всё равно, откуда пришло поле — из конструктора или из модуля каталога. --}} @php // Пустая обёртка не печатается: у объекта может не оказаться ни одного // заполненного поля, а базовый слой дал бы ей отступы на пустом месте. $visible = []; foreach ($component->fields() as $key => $field) { $value = $item->{$key}; if ($value === null || $value === '' || $value === [] || in_array($key, $skip ?? [], true)) { continue; } $visible[$key] = $field; } @endphp @if ($visible !== [])
@foreach ($visible as $key => $field) @php($value = $item->{$key})
@if (! ($hideLabels ?? false)) {{ $field->label }} @endif @switch ($field->kind->value) @case ('html')
@kzhtml($value)
@break @case ('bool') {{ $value ? 'да' : 'нет' }} @break @case ('image') @case ('file') @case ('gallery') @foreach ($item->mediaOf($key) as $file) @if ($file->isImage()) {{ $file->alt ?? '' }} @else {{ $file->name }} @endif @endforeach @break @case ('date') {{ $value instanceof \DateTimeInterface ? $value->format('d.m.Y') : $value }} @break @case ('datetime') {{ $value instanceof \DateTimeInterface ? $value->format('d.m.Y H:i') : $value }} @break @case ('multiselect') @case ('rows') {{ implode(', ', (array) $value) }} @break @default {{ $value }} @endswitch
@endforeach
@endif