Laravel #4

LARAVEL #4 8.12.2020, teisipäev. Sisestatud 09. – 10. detsember 2020
Контроллеры и валидация
1. В этом уроке поговорим о контроллерах и о валидации данных, которые поступают из формы.
2. Сначала создадим контроллер, но перед этим поговорим о том, что такое контроллер
3. Laravel состоит из шаблона Model, View, Controller.
View отвечает за различные HTML-шаблоны, Model отвечает за файлы для работы с БД.
Контроллер служит для объединения этих двух слоев – модели и вида, это по сути объединение
шаблонов с базой данных.
4. Сейчас мы создадим контроллер для получения данных из базы данных, будем производить
обработку всех этих данных. В дальнейшем создадим отдельную модель. И в контроллере будем
вызывать эту модель.
5. И через эту модель будем сохранять данные в бд
6. Сейчас же создадим контроллер, который будет получать и обрабатывать данные из формы
7. С помощью artisan создадим контроллер
8. В терминале пишем php artisan make:controller ContactController в папке проекта
9. Контроллер успешно создан в папке app/http/controllers/ContactController.php
10. В контроллере создаем функцию public function submit(). Пока что return okey
11. Теперь переходим в папку routes/web.php
12. Удаляем вызов функции в качестве второго параметра
13. Когда мы переходим по адресу ‘/contact/submit’, то у нас будет вызываться функция
контроллера submit
14. Давайте будем в функции submit() выводить все данные из формы
15. Чтобы получить все данные, надо в функцию submit() передавать один параметр на основе
класса Request::submit(Request $req)
dd($req) (просто выводим все данные)
16. Если хотим увидеть значения, полученные из формы, обращаемся к значению request,
найти массив parameters и в этом массиве будут все те данные, которые мы получили из формы.
17. Также имеем доступ к различным cookies, заголовкам (headers), сессиям (session),
каким методом все было отправлено, также на какой url-адрес была передана вся информация
18. Обычно нужны только данные из параметра request
19. Будем выводить не все данные, а например, только subject
20. dd($req->input(‘subject’))
21. Теперь после отправки данных выводится только тема сообщения
23. Теперь поговорим на тему валидации данных, те на проверку корректного заполнения
24. Создадим переменную $validation = $req->validate();
25. В эту функцию надо передать массив полей, которые мы проверяем. Указываем название
поля и какой метод проверки используем для этого поля
26. Во-первых, указываем, что это поле обязательно для заполнения. После | можем указать
дополнительные проверки для этого поля. Например, min:5. Минимальное количество символов
для заполнения. max:50. Если пользователь введет 51 символ, то будет считаться, что оно
некорректно заполнено
27. Проверок много, но мы остановимся на трех.
‘subject’ => ‘required|min:5|max:50’
28. Если поле subject будет незаполнено, будет ошибка, если будет меньше, 5 символов,
будет ошибка. Если будет больше 50 символов, то тоже будет ошибка.
29. Если хотим проверять другие поля, то пишем message.
‘message’ => ‘required|min:15|max:500’
30. Можем оставить только required
31. Мы прописали проверку данных на корректность. Теперь надо выводить ошибки.
32. Чтобы выводить ошибки, надо определиться с файлом, в котором будут выводиться ошибки
33. contact.blade.php. Здесь будут выводиться ошибки.
34. Под заголовком будут все возникающие ошибки
35. Изначально надо проверить, есть ли у нас ошибки
36. Пишем условный оператор, который обращается к объекту $errors.
@if($errors->any())
37. В каждом шаблоне Laravel присутствует объект $errors
38. В каждом шаблоне Laravel мы можем обратиться к объекту $errors
39. Если ошибки будут, то их надо будет выводить
40. Ошибки можно будет выводить как угодно
41. Мы будем выводить стилями Bootstrap
42. ‘<div class=”alert alert-danger”>
‘<ul>
43. Поскольку ошибок может быть много, мы создаем цикл
44. В движке Laravel существует несколько циклов: foreach, for, for while, for else.
Их всегда надо закрывать.
45. Мы обращаемся ко всем сообщениям об ошибке и перебираем их
@foreach($errors->all() as $error)
46. В ‘<li>{{$error}} выводим текст ошибки
47. Эти тексты ошибок можно кастомизировать, но сейчас выводим их так как есть
48. Обновим нашу страницу и нажмем send
49. Появляется ошибка
The subject field is required
The message field is required
50. Или что хотя бы 5 символов:
The subject must be at last 5 characters
51. Обработка формы и отслеживание ошибок работает корректно
52. Позже изменим текст ошибок на наш собственный
53. В документации Laravel есть различные валидации, которые можно добавлять в наши формочки
54. Available validation rules, и здесь прописаны тексты проверок, которые мы можем
использовать
55. Например, after date; Если введем дату меньше указанной, то будет выводиться ошибка
56. laravel.com/docs/5.7/validation#available-validation-rules
57. Создадим еще одну валидацию с помощью отдельного файла, писать свой текст ошибок
58. Создаем отдельный файл для валидации данных
59. Переходим в терминал и с помощью artisan создадим новый файл, содержащий валидацию
60. php artisan make:request ContactRequest
61. Создается новая папка app/http/Requests/ContactRequest.php
62. Сразу замечаем функцию authoraze(), в которой меняем значение return на true
63. Если здесь будет false, то пользователь не сможет отправлять данные до тех пор, пока он
не будет авторизован на сайте
64. Соответсвенно мы пишем true, чтоб он мог отправлять данные, даже если он не авторизован
65. В функции rules мы можем прописывать точно такие же провила, как в функции validate()
66. Из функции validate() копируем return [ , subject, message], в функцию rules, а функцию
validate закомментируем
67. Прежде чем мы подключим наши проверки, подключим наш новый файл к контроллеру
68. В начале ContactController.php пишем
use App\Http\Requests\ContactRequest
69. Для того чтоб все это работало, нам надо изменить тип параметра, который мы передаем в
функцию submit.
public function submit(ContactRequest $req)
70. Когда мы будем передавать данные формы, будет передаваться $req типа ContactRequest
на основе класса ContactRequest и обработка будет происходить на основе правил из функции
rules и если возникнут ошибки, то они будут выводиться на странице контактов.
71. Перезагрузим страницу контактов и отправим данные и видим, что происходит вывод всех
ошибок
Все работает корректно.
72. Напишем еще дополнительные ошибки, а дальше поменяем текст этих ошибок.
73. ‘email’ => ‘required|email’
74. ‘name’ => ‘required’
75. Если нажимаем send, то видим, что выводится 4 ошибки. Сколько полей,…
76. Теперь поменяем текст всех ошибок
77. В файле ContactRequest создадим новую функцию public function attributes() {
return [‘name’ => ‘your name’]}
78. Создаем новую функцию messages()
return [‘name.required’ => ‘obligatory’]
79. То же самое для email, subject и message.
Запятую с конца удаляем.
80. Если случится ошибка required для любого из этих полей, то будет выводиться ошибка,
которую мы прописали
81. Если хотите, можете для других типов ошибок прописать свои ошибки
82. email.email => некорректный email
83. Таким образом происходит обработка формочек
84. Передаем данные на контроллер из web.php, в котором вызывается контроллер функция,
в ней и в ней вызывается ф..
ContactRequest, в котором вызывается проверка данных – и потом все эти ошибки выводятся
у нас на страничке при помощи цикла.
На следующем уроке поговорим про модели и научимся добавлять данные в БД.

Посмотреь LUMEN.LARAVEL – Karl
09.detsember 2020 kell 17.30, Priit