{{-- Partial: picker-поля — cars_picker, makes_picker, reviews_picker, services_picker Переменные из родителя: $field, $prefix, $values --}} {{-- ── cars_picker — мультиселект авто из каталога ────────────────── --}} @if($field['type'] === 'cars_picker') @php // Площадки из справочника — строго оттуда, не из car.platform $cpSection = \App\Models\DictSection::where('code', 'platforms')->with('values')->first(); $cpPlatforms = $cpSection ? $cpSection->values->pluck('value') : collect(); $allCars = \App\Models\Car::select('id', 'make', 'model', 'year', 'price_rub', 'price_usd', 'platform') ->where('status', 'active') ->orderBy('make')->orderBy('model')->get(); $selectedIds = array_map('intval', $values[$field['name']] ?? []); $cpUid = 'cp-' . Str::random(6); // уникальный id для изоляции JS на странице с несколькими picker-ами @endphp
{{-- Кнопки-фильтры по площадкам (данные из справочника) --}} @if($cpPlatforms->isNotEmpty())
@foreach($cpPlatforms as $cpPl) @endforeach
@endif {{-- Список авто с data-platform для JS-фильтрации --}}
@forelse($allCars as $car)
id, $selectedIds))>
@empty

В каталоге пока нет автомобилей.

@endforelse
Порядок на странице — в том порядке, в каком выбраны.
{{-- JS: фильтрация строк по площадке, изолирована по data-picker --}} {{-- ── makes_picker — чекбоксы марок из справочника dict_values ──── --}} @elseif($field['type'] === 'makes_picker') @php $makesSection = \App\Models\DictSection::where('code', 'makes')->first(); $allMakeObjs = $makesSection ? \App\Models\DictValue::where('section_id', $makesSection->id) ->whereNull('parent_id') ->orderBy('sort_order') ->get(['id', 'value', 'logo']) : collect(); $selectedMakes = $values[$field['name']] ?? []; @endphp
@forelse($allMakeObjs as $makeObj)
value, $selectedMakes))>
@empty

Добавьте марки в справочник «Марки и модели».

@endforelse
Выбранные марки выводятся в алфавитном порядке в блоке.
{{-- ── reviews_picker — выбор отзывов из таблицы reviews ─────────── --}} @elseif($field['type'] === 'reviews_picker') @php $allReviews = \App\Models\Review::orderBy('sort_order')->orderByDesc('created_at')->get(); $selectedIds = array_map('intval', $values[$field['name']] ?? []); @endphp
@if($allReviews->isEmpty())
Отзывов пока нет. Добавить отзыв
@else
@foreach($allReviews as $rev)
id, $selectedIds))>
@endforeach
Выбранные отзывы выводятся в порядке их sort_order. Управление отзывами @endif
{{-- ── services_picker — чекбоксы услуг из таблицы services ─────── --}} @elseif($field['type'] === 'services_picker') @php $allServices = \App\Models\Service::orderBy('sort_order')->orderBy('title')->get(); $selectedIds = array_map('intval', $values[$field['name']] ?? []); @endphp
@if($allServices->isEmpty())
Услуг пока нет. Добавить
@else
@foreach($allServices as $svc)
id, $selectedIds))>
@endforeach
Оставьте пустым — будут показаны последние N активных услуг. Управление услугами @endif
@endif