{{-- Вьюха: Форма создания/редактирования блока контента (ACF-подобные поля) --}} @extends('admin.layout') @section('title', $block->exists ? 'Редактировать блок' : 'Новый блок') @section('content_header')

{{ $block->exists ? 'Блок: ' . $block->title : 'Новый блок' }}

Назад
@stop @section('breadcrumb') @stop @section('content') @if($block->exists)
@method('PUT') @else @endif @csrf
{{-- ── Левая колонка: поля блока ──────────────────────────────── --}}
{{-- Системные поля (name, title, layout) --}}

Идентификация

@error('title')
{{ $message }}
@enderror
exists ? 'readonly' : '' }} placeholder="например: why_us" required> @error('name')
{{ $message }}
@enderror @if($block->exists) Системное имя нельзя изменить после создания. @endif
@if($block->exists) {{-- Макет заблокирован: показываем только для чтения --}}
Макет нельзя изменить после создания.
@else {{-- Выбор макета при создании --}}
@error('layout')
{{ $message }}
@enderror Определяет, какие поля нужно заполнить.
@endif
{{-- Содержимое: поля по макету --}}

Содержимое блока

@if($block->exists && $layoutDef) {{-- Редактирование: макет известен, рендерим сразу --}} @include('admin.blocks._fields', [ 'fields' => $layoutDef['fields'], 'prefix' => 'data', 'values' => old('data', $block->data ?? []), ]) @else {{-- Создание: рендерим поля для каждого макета, JS показывает нужный --}} @foreach($layouts as $key => $layout)
@include('admin.blocks._fields', [ 'fields' => $layout['fields'], 'prefix' => 'data', 'values' => old('data', []), ])
@endforeach @endif
{{-- ── Правая колонка: настройки ───────────────────────────────── --}}

Настройки

is_active ?? true) ? 'checked' : '' }}>
@if($block->exists && $block->layout)
Подключение на Blade-странице: @php $blockHint = '{!! \App\Models\Block::getByName(\'' . $block->name . '\')?->render() !!}'; @endphp {{ $blockHint }} @endif
@stop @push('js') @endpush