Blame view

app/Http/Requests/PagesRequest.php 3.32 KB
486a3601d   Андрей Ларионов   Должности и работ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <?php
  
  namespace App\Http\Requests;
  
  use Illuminate\Foundation\Http\FormRequest;
  
  class PagesRequest extends FormRequest
  {
      /**
       * Determine if the user is authorized to make this request.
       *
       * @return bool
       */
      public function authorize()
      {
5b2dcf44b   Андрей Ларионов   Редактор страниц ...
16
          return true;
486a3601d   Андрей Ларионов   Должности и работ...
17
18
19
20
21
22
23
24
25
      }
  
      /**
       * Get the validation rules that apply to the request.
       *
       * @return array<string, mixed>
       */
      public function rules()
      {
5b2dcf44b   Андрей Ларионов   Редактор страниц ...
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
          $unique = 'unique:pages,slug';
          if (in_array($this->route()->getName(), ['admin.update-page'])) {
              // получаем модель Pages через маршрут admin/editor-pages/edit/{page}
              $model = $this->route('page');
              /*
               * Проверка на уникальность slug, исключая этот пост по идентификатору:
               * 1. posts - таблица базы данных, где проверяется уникальность
               * 2. slug - имя колонки, уникальность значения которой проверяется
               * 3. значение по которому из проверки исключается запись таблицы БД
               * 4. поле, по которому из проверки исключается запись таблицы БД
               * Для проверки будет использован такой SQL-запрос к базе данных:
               * SELECT COUNT(*) FROM `pages` WHERE `slug` = '...' AND `id` <> 17
               */
              $unique = 'unique:pages,slug,'.$model->id.',id';
          }
486a3601d   Андрей Ларионов   Должности и работ...
41
          return [
5b2dcf44b   Андрей Ларионов   Редактор страниц ...
42
43
44
45
46
47
48
49
50
51
52
53
54
55
              'name' => [
                  'required',
                  'string',
                  'min:3',
                  'max:255',
              ],
              'slug' => [
                  'required',
                  'max:255',
                   $unique,
                  'regex:~^[-_a-z0-9]+$~i',
              ],
              'anons' => [
                  'required',
d152a3a68   Андрей Ларионов   Создание основных...
56
                  'min:50',
5b2dcf44b   Андрей Ларионов   Редактор страниц ...
57
58
59
              ],
              'text' => [
                  'required',
d152a3a68   Андрей Ларионов   Создание основных...
60
                  'min:255',
5b2dcf44b   Андрей Ларионов   Редактор страниц ...
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
              ],
              'image' => [
                  'mimes:jpeg,jpg,png',
                  'max:15000'
              ],
          ];
      }
  
      public function messages() {
          return [
              'required' => 'Поле :attribute обязательно для ввода',
              'unique' => 'Поле :attribute должно быть уникальным',
              'mimes' => 'Допускаются файлы только с расширением jpeg,jpg,png',
              'min' => [
                  'string' => 'Поле «:attribute» должно быть не меньше :min символов',
                  'integer' => 'Поле «:attribute» должно быть :min или больше',
                  'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
              ],
  
              'max' => [
                  'string' => 'Поле «:attribute» должно быть не больше :max символов',
                  'integer' => 'Поле «:attribute» должно быть :max или меньше',
                  'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
              ],
486a3601d   Андрей Ларионов   Должности и работ...
85
86
87
          ];
      }
  }