Blame view

app/Http/Requests/PagesRequest.php 3.27 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',
5b2dcf44b   Андрей Ларионов   Редактор страниц ...
56
              ],
330dc3881   Андрей Ларионов   Коммит обновление...
57
              'text2' => [
5b2dcf44b   Андрей Ларионов   Редактор страниц ...
58
                  'required',
5b2dcf44b   Андрей Ларионов   Редактор страниц ...
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
              ],
              '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   Андрей Ларионов   Должности и работ...
83
84
85
          ];
      }
  }