{{-- Partial: поля макета блока — итерируется по массиву $fields. Переменные: $fields — массив определений полей из BlockLayoutRegistry $prefix — префикс для атрибута name (обычно 'data') $values — текущие значения полей (массив) Сложные типы вынесены в admin/blocks/partials/: _field_image.blade.php — image _field_pickers.blade.php — cars_picker, makes_picker, reviews_picker, services_picker _field_repeater.blade.php — repeater --}} @php /* Хелпер: строит публичный URL для значения поля image */ $imageUrl = fn(?string $val): string => $val ? (str_starts_with($val, 'http') ? $val : asset('storage/' . $val)) : ''; @endphp @foreach($fields as $field) {{-- ── Checkbox (булев флаг) ───────────────────────────────────────── --}} @if($field['type'] === 'checkbox')
{{-- ── Текст / URL ──────────────────────────────────────────────────── --}} @elseif($field['type'] === 'text' || $field['type'] === 'url')
{{-- ── Textarea ──────────────────────────────────────────────────────── --}} @elseif($field['type'] === 'textarea')
{{-- ── Image — загрузка файла ─────────────────────────────────────── --}} @elseif($field['type'] === 'image') @include('admin.blocks.partials._field_image') {{-- ── Picker-поля (cars, makes, reviews, services) ──────────────── --}} @elseif(in_array($field['type'], ['cars_picker', 'makes_picker', 'reviews_picker', 'services_picker'])) @include('admin.blocks.partials._field_pickers') {{-- ── Repeater ─────────────────────────────────────────────────────── --}} @elseif($field['type'] === 'repeater') @include('admin.blocks.partials._field_repeater') @endif @endforeach