@php($name = $field['name']) @php($type = $field['type']) @php($value = $block->get($name)) @php($required = $field['required'] ?? false) @php($prefix = 'data.' . $name) @php($fieldId = 'f_' . $name) @php($hasError = collect($errors->keys())->contains(fn ($k) => $k === $prefix || str_starts_with($k, $prefix . '.')) || ($type === 'image' && $errors->has('upload.' . $name)))
{{ $message }}
@enderror @elseif ($type === 'richtext') @include('admin.blocks._richeditor', ['name' => "data[{$name}]", 'value' => old('data.' . $name, $value)]) @error($prefix){{ $message }}
@enderror @elseif ($type === 'textarea') @error($prefix){{ $message }}
@enderror @elseif ($type === 'image') @php($current = old('data.' . $name, $value)) @php($usage = $field['usage'] ?? 'free') @php($dim = config('media.dimensions.' . $usage)) @php($maxKb = media_max_upload_kb()) @php($imgHint = 'Formats acceptés : JPG, PNG, WEBP · Taille max : ' . media_max_upload_label() . (! empty($dim['min_width']) ? ' · Minimum ' . $dim['min_width'] . ' px de large' : '') . (! empty($dim['recommended']) ? ' · Recommandé : ' . $dim['recommended'] : '')) @php($previewUrl = ! $current ? '' : (is_numeric($current) ? media_url($current) : asset(ltrim($current, '/')))) @if ($previewUrl)Pour remplacer cette image, choisissez un fichier ci-dessous puis enregistrez.
@elseAucune image pour l'instant — choisissez un fichier ci-dessous puis enregistrez.
@endif @error('upload.' . $name){{ $message }}
@enderror @error($prefix){{ $message }}
@enderror{{ $imgHint }}
@elseif ($type === 'rows') @php($rows = $value ?: []) @php($rowLabel = $field['row_label'] ?? 'Élément') @if (empty($rows))⚠️ Cette liste est vide : cette partie du bloc n'affichera rien sur le site. Si vous avez supprimé le bloc d'origine par erreur, restaurez une sauvegarde (menu « Sauvegardes »), ou contactez votre développeur pour initialiser la structure.
@endif @foreach ($rows as $i => $row) @php($rowHint = is_array($row) ? collect(['num', 'title', 'label', 'year', 'text'])->map(fn ($k) => $row[$k] ?? '')->first(fn ($v) => trim(strip_tags((string) $v)) !== '') : null){{ $message }}
@enderrorLe nombre d'éléments est fixe (il fait partie du design) — vous modifiez les textes, jamais la structure.
@endif @elseif ($type === 'repeater') @php($itemKey = $field['item'] ?? 'html') @php($rows = old('data.' . $name, $value ?: [])) {{-- A brand-new block has no rows yet: render one empty editor so the field is actually usable (zero inputs = nothing to type into). --}} @php($rows = $rows ?: [[$itemKey => '']]) @foreach ($rows as $i => $row) @include('admin.blocks._richeditor', [ 'name' => "data[{$name}][{$i}][{$itemKey}]", 'value' => is_array($row) ? ($row[$itemKey] ?? '') : $row, ]) @error($prefix . '.' . $i . '.' . $itemKey){{ $message }}
@enderror @endforeachUn paragraphe par zone de texte.
@elseif ($type === 'images') @php($usage = $field['usage'] ?? 'logo') @php($itemLabel = $field['item_label'] ?? 'Image') @php($maxKb = media_max_upload_kb()) @php($items = old('data.' . $name, $value ?: [])) @php($accept = 'image/jpeg,image/png,image/webp'){{ $message }}
@enderror{{ $field['help'] }}
@endif