form.blade.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. {{--
  2. Вьюха: форма создания / редактирования отзыва
  3. Создана: 2026-05-07
  4. Контроллер: Admin\ReviewAdminController::create() / edit() / store() / update()
  5. Переменные: $review (Review|new Review)
  6. --}}
  7. @extends('admin.layout')
  8. @section('title', $review->exists ? 'Редактировать отзыв' : 'Новый отзыв')
  9. @section('content_header')
  10. <div class="d-flex justify-content-between align-items-center">
  11. <h1 class="m-0">{{ $review->exists ? 'Редактировать отзыв' : 'Новый отзыв' }}</h1>
  12. <a href="{{ route('admin.reviews.index') }}" class="btn btn-default btn-sm">
  13. <i class="fas fa-arrow-left"></i> Назад
  14. </a>
  15. </div>
  16. @stop
  17. @section('breadcrumb')
  18. <li class="breadcrumb-item"><a href="{{ route('admin.dashboard') }}">Главная</a></li>
  19. <li class="breadcrumb-item"><a href="{{ route('admin.reviews.index') }}">Отзывы</a></li>
  20. <li class="breadcrumb-item active">{{ $review->exists ? 'Редактировать' : 'Новый' }}</li>
  21. @stop
  22. @section('content')
  23. @if($review->exists)
  24. <form action="{{ route('admin.reviews.update', $review) }}" method="POST">
  25. @method('PUT')
  26. @else
  27. <form action="{{ route('admin.reviews.store') }}" method="POST">
  28. @endif
  29. @csrf
  30. <div class="row">
  31. <div class="col-md-8">
  32. <div class="card card-primary card-outline">
  33. <div class="card-header"><h3 class="card-title">Данные отзыва</h3></div>
  34. <div class="card-body">
  35. @if($errors->any())
  36. <div class="alert alert-danger">
  37. <ul class="mb-0">
  38. @foreach($errors->all() as $e)<li>{{ $e }}</li>@endforeach
  39. </ul>
  40. </div>
  41. @endif
  42. <div class="row">
  43. <div class="col-md-6">
  44. <div class="form-group">
  45. <label>Имя автора <span class="text-danger">*</span></label>
  46. <input type="text" name="author"
  47. class="form-control @error('author') is-invalid @enderror"
  48. value="{{ old('author', $review->author ?? '') }}"
  49. placeholder="Иван Иванов"
  50. required>
  51. @error('author')<div class="invalid-feedback">{{ $message }}</div>@enderror
  52. </div>
  53. </div>
  54. <div class="col-md-6">
  55. <div class="form-group">
  56. <label>Автомобиль</label>
  57. <input type="text" name="car_name"
  58. class="form-control @error('car_name') is-invalid @enderror"
  59. value="{{ old('car_name', $review->car_name ?? '') }}"
  60. placeholder="Toyota Camry 2022">
  61. @error('car_name')<div class="invalid-feedback">{{ $message }}</div>@enderror
  62. </div>
  63. </div>
  64. </div>
  65. <div class="row">
  66. <div class="col-md-4">
  67. <div class="form-group">
  68. <label>Рейтинг <span class="text-danger">*</span></label>
  69. <select name="rating" class="form-control @error('rating') is-invalid @enderror">
  70. @for ($s = 5; $s >= 1; $s--)
  71. <option value="{{ $s }}"
  72. @selected(old('rating', $review->rating ?? 5) == $s)>
  73. {{ str_repeat('★', $s) }}{{ str_repeat('☆', 5 - $s) }} ({{ $s }})
  74. </option>
  75. @endfor
  76. </select>
  77. @error('rating')<div class="invalid-feedback">{{ $message }}</div>@enderror
  78. </div>
  79. </div>
  80. <div class="col-md-4">
  81. <div class="form-group">
  82. <label>Дата отзыва</label>
  83. <input type="date" name="review_date"
  84. class="form-control @error('review_date') is-invalid @enderror"
  85. value="{{ old('review_date', $review->review_date?->format('Y-m-d') ?? '') }}">
  86. @error('review_date')<div class="invalid-feedback">{{ $message }}</div>@enderror
  87. </div>
  88. </div>
  89. <div class="col-md-4">
  90. <div class="form-group">
  91. <label>Порядок сортировки</label>
  92. <input type="number" name="sort_order" min="0"
  93. class="form-control"
  94. value="{{ old('sort_order', $review->sort_order ?? 0) }}">
  95. </div>
  96. </div>
  97. </div>
  98. <div class="form-group">
  99. <label>Текст отзыва <span class="text-danger">*</span></label>
  100. <textarea name="body" rows="5"
  101. class="form-control @error('body') is-invalid @enderror"
  102. placeholder="Текст отзыва..."
  103. required>{{ old('body', $review->body ?? '') }}</textarea>
  104. @error('body')<div class="invalid-feedback">{{ $message }}</div>@enderror
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="col-md-4">
  110. <div class="card card-secondary card-outline">
  111. <div class="card-header"><h3 class="card-title">Настройки</h3></div>
  112. <div class="card-body">
  113. <div class="custom-control custom-switch">
  114. <input type="checkbox" class="custom-control-input" id="is_active"
  115. name="is_active" value="1"
  116. {{ old('is_active', $review->is_active ?? true) ? 'checked' : '' }}>
  117. <label class="custom-control-label" for="is_active">Отзыв активен</label>
  118. </div>
  119. <small class="text-muted d-block mt-1">
  120. Неактивные отзывы не отображаются на сайте.
  121. </small>
  122. </div>
  123. <div class="card-footer">
  124. <button type="submit" class="btn btn-primary btn-block">
  125. <i class="fas fa-save"></i> Сохранить
  126. </button>
  127. <a href="{{ route('admin.reviews.index') }}" class="btn btn-secondary btn-block mt-1">
  128. Отмена
  129. </a>
  130. </div>
  131. </div>
  132. </div>
  133. </div>
  134. </form>
  135. @stop