| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- {{--
- Вьюха: Форма создания и редактирования значения справочника
- Создана: 2026-05-06
- Контроллер: Admin\ManualController::valueCreate() / valueEdit() / valueStore() / valueUpdate()
- Переменные: $section (DictSection), $value (DictValue|undefined), $parent (DictValue|null)
- Логика поля "Родитель" (только для иерархических разделов):
- - Если $parent задан (передан parent_id в URL): показывает readonly текст родителя + hidden input
- - Если создание: select с выбором родителя (или без — для верхнего уровня)
- - Если редактирование: select с текущим родителем, себя исключает из списка
- --}}
- @extends('admin.layout')
- @section('title', isset($value) ? 'Редактировать значение' : 'Добавить значение')
- @section('content_header')
- <div class="d-flex justify-content-between align-items-center">
- <h1 class="m-0">
- {{ isset($value) ? 'Редактировать значение' : 'Добавить значение' }}
- <small class="text-muted">— {{ $section->label }}</small>
- </h1>
- <a href="{{ route('admin.manuals.values', $section) }}" class="btn btn-default btn-sm">
- <i class="fas fa-arrow-left"></i> Назад
- </a>
- </div>
- @stop
- @section('breadcrumb')
- <li class="breadcrumb-item"><a href="{{ route('admin.dashboard') }}">Главная</a></li>
- <li class="breadcrumb-item"><a href="{{ route('admin.manuals.index') }}">Справочники</a></li>
- <li class="breadcrumb-item"><a href="{{ route('admin.manuals.values', $section) }}">{{ $section->label }}</a></li>
- <li class="breadcrumb-item active">{{ isset($value) ? 'Редактировать' : 'Добавить' }}</li>
- @stop
- @section('content')
- <div class="row justify-content-center">
- <div class="col-md-6">
- <div class="card card-primary card-outline">
- <div class="card-body">
- @if($errors->any())
- <div class="alert alert-danger">
- <ul class="mb-0">
- @foreach($errors->all() as $e) <li>{{ $e }}</li> @endforeach
- </ul>
- </div>
- @endif
- <form action="{{ isset($value)
- ? route('admin.manuals.value.update', [$section, $value])
- : route('admin.manuals.value.store', $section) }}"
- method="POST" enctype="multipart/form-data">
- @csrf
- @if(isset($value)) @method('PUT') @endif
- @if($section->is_hierarchical && isset($parent))
- <div class="form-group">
- <label>Родитель</label>
- <input type="hidden" name="parent_id" value="{{ $parent->id }}">
- <input type="text" class="form-control" value="{{ $parent->value }}" readonly>
- </div>
- @elseif($section->is_hierarchical && !isset($value))
- <div class="form-group">
- <label>Родитель (оставьте пустым для верхнего уровня)</label>
- <select name="parent_id" class="form-control">
- <option value="">— верхний уровень —</option>
- @foreach($section->values as $parentOpt)
- <option value="{{ $parentOpt->id }}"
- @selected(old('parent_id') == $parentOpt->id)>
- {{ $parentOpt->value }}
- </option>
- @endforeach
- </select>
- </div>
- @elseif($section->is_hierarchical && isset($value))
- <div class="form-group">
- <label>Родитель</label>
- <select name="parent_id" class="form-control">
- <option value="">— верхний уровень —</option>
- @foreach($section->values as $parentOpt)
- @if($parentOpt->id !== $value->id)
- <option value="{{ $parentOpt->id }}"
- @selected(old('parent_id', $value->parent_id) == $parentOpt->id)>
- {{ $parentOpt->value }}
- </option>
- @endif
- @endforeach
- </select>
- </div>
- @endif
- <div class="form-group">
- <label>Значение <span class="text-danger">*</span></label>
- <input type="text" name="value"
- class="form-control @error('value') is-invalid @enderror"
- value="{{ old('value', $value->value ?? '') }}"
- autofocus>
- @error('value')<div class="invalid-feedback">{{ $message }}</div>@enderror
- </div>
- {{-- Флаг только для раздела "Страны" --}}
- @if($section->code === 'countries')
- <div class="form-group">
- <label>Флаг (emoji)</label>
- <input type="text" name="flag" maxlength="10"
- class="form-control form-control-sm" style="max-width:80px;font-size:22px"
- value="{{ old('flag', $value->flag ?? '') }}"
- placeholder="🇩🇪">
- <small class="text-muted">Emoji флага страны</small>
- </div>
- @endif
- <div class="form-group">
- <label>Порядок сортировки</label>
- <input type="number" name="sort_order"
- class="form-control @error('sort_order') is-invalid @enderror"
- value="{{ old('sort_order', $value->sort_order ?? 0) }}">
- @error('sort_order')<div class="invalid-feedback">{{ $message }}</div>@enderror
- </div>
- {{-- Логотип только для раздела "Марки" (code=makes), только корневые значения --}}
- @if($section->code === 'makes' && !($parent ?? null))
- <div class="form-group">
- <label>Логотип марки</label>
- @if(isset($value) && $value->logo)
- <div class="mb-2" id="logo-current">
- <img src="{{ asset('storage/' . $value->logo) }}"
- class="img-thumbnail d-block"
- style="max-height:80px;max-width:140px;object-fit:contain;background:#f8f9fa">
- <small class="text-muted">{{ basename($value->logo) }}</small>
- <div class="form-check mt-1">
- <input class="form-check-input" type="checkbox"
- name="remove_logo" value="1" id="remove_logo">
- <label class="form-check-label text-danger small" for="remove_logo">
- Удалить логотип
- </label>
- </div>
- </div>
- @endif
- <div class="custom-file" style="max-width:300px">
- <input type="file" name="logo" class="custom-file-input"
- accept="image/*" id="logo-file">
- <label class="custom-file-label" for="logo-file">
- {{ (isset($value) && $value->logo) ? 'Заменить логотип' : 'Выбрать файл (PNG/SVG)' }}
- </label>
- </div>
- <small class="text-muted d-block mt-1">PNG или SVG, не более 2 МБ</small>
- </div>
- @endif
- <div class="d-flex">
- <button type="submit" class="btn btn-primary">
- <i class="fas fa-save"></i> {{ isset($value) ? 'Сохранить' : 'Добавить' }}
- </button>
- <a href="{{ route('admin.manuals.values', $section) }}" class="btn btn-default ml-2">Отмена</a>
- </div>
- </form>
- </div>
- </div>
- </div>
- </div>
- @stop
|