HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Обновление очень похоже на создание, с той лишь разницей, что мы не создаем сущность с нуля, а извлекаем ее из базы. Остальное практически без изменений.</p>
1 <p>Обновление очень похоже на создание, с той лишь разницей, что мы не создаем сущность с нуля, а извлекаем ее из базы. Остальное практически без изменений.</p>
2 <p><em>За скобками остается важный вопрос: права на изменение. Изменять что-то на сайте, обычно, может только автор, тот кто создал сущность. Механизм, который отвечает за выдачу и проверку прав, называется авторизацией (не путать с аутентификацией). В Laravel авторизация встроена. Она не рассматривается в курсе, но про нее можно прочитать самостоятельно в документации.</em></p>
2 <p><em>За скобками остается важный вопрос: права на изменение. Изменять что-то на сайте, обычно, может только автор, тот кто создал сущность. Механизм, который отвечает за выдачу и проверку прав, называется авторизацией (не путать с аутентификацией). В Laravel авторизация встроена. Она не рассматривается в курсе, но про нее можно прочитать самостоятельно в документации.</em></p>
3 <h2>Форма</h2>
3 <h2>Форма</h2>
4 <h3>Маршрут</h3>
4 <h3>Маршрут</h3>
5 <h3>Обработчик</h3>
5 <h3>Обработчик</h3>
6 <h3>Шаблон</h3>
6 <h3>Шаблон</h3>
7 <p>Шаблон редактирования практически один в один повторяет шаблон создания. Разными у них бывают только отдельные элементы, например, текст кнопки отправки формы. Для таких случаев используют директиву @include($pathToTemplate), которая позволяет извлекать общие куски шаблонов в отдельные шаблоны и включать их там где нужно.</p>
7 <p>Шаблон редактирования практически один в один повторяет шаблон создания. Разными у них бывают только отдельные элементы, например, текст кнопки отправки формы. Для таких случаев используют директиву @include($pathToTemplate), которая позволяет извлекать общие куски шаблонов в отдельные шаблоны и включать их там где нужно.</p>
8 <p>Создайте в директории<em>resources/views/article</em>шаблон<em>form.blade.php</em>.</p>
8 <p>Создайте в директории<em>resources/views/article</em>шаблон<em>form.blade.php</em>.</p>
9 <p>Теперь включите его в<em>create.blade.php</em>:</p>
9 <p>Теперь включите его в<em>create.blade.php</em>:</p>
10 <p>И практически то же самое надо добавить в<em>edit.blade.php</em>. Создайте этот файл и вставьте в него код:</p>
10 <p>И практически то же самое надо добавить в<em>edit.blade.php</em>. Создайте этот файл и вставьте в него код:</p>
11 <p>Основных изменений здесь три:</p>
11 <p>Основных изменений здесь три:</p>
12 <ul><li>Другое имя кнопки</li>
12 <ul><li>Другое имя кнопки</li>
13 <li>Метод отправки PATCH, так как происходит обновление</li>
13 <li>Метод отправки PATCH, так как происходит обновление</li>
14 <li>Адрес формы указывает на конкретную статью</li>
14 <li>Адрес формы указывает на конкретную статью</li>
15 </ul><h2>Обработчик формы</h2>
15 </ul><h2>Обработчик формы</h2>
16 <h3>Маршрут</h3>
16 <h3>Маршрут</h3>
17 <h3>Обработчик</h3>
17 <h3>Обработчик</h3>
18 <p>Обработчик, обновляющий сущность практически идентичен созданию сущности. Разница кроется в нескольких деталях. Во-первых, мы работаем с существующей статьей, поэтому ее нужно извлечь из базы данных. Во-вторых, валидация на уникальность должна учитывать текущую статью при проверке. Иначе валидатор будет ругаться, что такое имя уже есть в базе данных.</p>
18 <p>Обработчик, обновляющий сущность практически идентичен созданию сущности. Разница кроется в нескольких деталях. Во-первых, мы работаем с существующей статьей, поэтому ее нужно извлечь из базы данных. Во-вторых, валидация на уникальность должна учитывать текущую статью при проверке. Иначе валидатор будет ругаться, что такое имя уже есть в базе данных.</p>
19 <p>Можно заметить, что валидации повторяются практически один в один. Так происходит в подавляющем большинстве случаев. Те правила, которые применяются к сущности при создании, должны применяться к ней и во время редактирования. При текущем подходе возникает дублирование, которого хотелось бы избежать. Это можно сделать с помощью<a>Form Request</a>.</p>
19 <p>Можно заметить, что валидации повторяются практически один в один. Так происходит в подавляющем большинстве случаев. Те правила, которые применяются к сущности при создании, должны применяться к ней и во время редактирования. При текущем подходе возникает дублирование, которого хотелось бы избежать. Это можно сделать с помощью<a>Form Request</a>.</p>
20 <p>В остальном все то же самое: объект заполняется значениями из формы, далее сохранение и редирект на список статей.</p>
20 <p>В остальном все то же самое: объект заполняется значениями из формы, далее сохранение и редирект на список статей.</p>