0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Для реализации создания и обновления сущности в CRUD, нужно научиться правильно работать с формами. Создавать формы самостоятельно, очень утомительное занятие. Сотни строк одинакового кода, обработка ошибок, защита от атак, все это придется делать снова и снова.</p>
1
<p>Для реализации создания и обновления сущности в CRUD, нужно научиться правильно работать с формами. Создавать формы самостоятельно, очень утомительное занятие. Сотни строк одинакового кода, обработка ошибок, защита от атак, все это придется делать снова и снова.</p>
2
<p>Обычно фреймворки имеют встроенную поддержку генерации форм, которая состоит из набора функций, автоматизирующих рутину. В Laravel так было изначально, но затем формы выделили в отдельные пакеты, один из них<a>spatie/laravel-html</a>. В самом Laravel осталось буквально<a>несколько элементов</a>: защита от<a>CSRF</a>и поддержка дополнительных методов HTTP в HTML-формах.</p>
2
<p>Обычно фреймворки имеют встроенную поддержку генерации форм, которая состоит из набора функций, автоматизирующих рутину. В Laravel так было изначально, но затем формы выделили в отдельные пакеты, один из них<a>spatie/laravel-html</a>. В самом Laravel осталось буквально<a>несколько элементов</a>: защита от<a>CSRF</a>и поддержка дополнительных методов HTTP в HTML-формах.</p>
3
<h2>LaravelCollective/HTML</h2>
3
<h2>LaravelCollective/HTML</h2>
4
<p>Для установки этого компонента выполните эту команду:</p>
4
<p>Для установки этого компонента выполните эту команду:</p>
5
<h3>Библиотечные функции</h3>
5
<h3>Библиотечные функции</h3>
6
<p>Эта библиотека включает в себя несколько десятков статических методов, формирующих различные элементы. Вот несколько примеров:</p>
6
<p>Эта библиотека включает в себя несколько десятков статических методов, формирующих различные элементы. Вот несколько примеров:</p>
7
<p>Особняком стоит генерация самого тега формы. Из-за того, что этот тег оборачивает все остальные элементы формы, он состоит из двух методов: один открывает форму, другой - закрывает:</p>
7
<p>Особняком стоит генерация самого тега формы. Из-за того, что этот тег оборачивает все остальные элементы формы, он состоит из двух методов: один открывает форму, другой - закрывает:</p>
8
<p>Наиболее интересная возможность в этом пакете - интеграция с ORM. В таком случае форма берет на себя часть задач по обработке формы. Для этого вместо метода form используется метод modelForm. Первым параметром в него передается тот объект, форма которого строится.</p>
8
<p>Наиболее интересная возможность в этом пакете - интеграция с ORM. В таком случае форма берет на себя часть задач по обработке формы. Для этого вместо метода form используется метод modelForm. Первым параметром в него передается тот объект, форма которого строится.</p>
9
<p>Разница в том, что эта форма самостоятельно извлекает из объекта значения свойств и подставляет их в форму. Это полезно при редактировании или при выводе ошибок, когда не удалось выполнить нужное действие. В следующем уроке мы воспользуемся именно таким подходом, он значительно экономит время.</p>
9
<p>Разница в том, что эта форма самостоятельно извлекает из объекта значения свойств и подставляет их в форму. Это полезно при редактировании или при выводе ошибок, когда не удалось выполнить нужное действие. В следующем уроке мы воспользуемся именно таким подходом, он значительно экономит время.</p>
10
<h2>Данные формы</h2>
10
<h2>Данные формы</h2>
11
<p>Любую информацию о HTTP-запросе, включая данные формы, можно получить из объекта $request. Laravel передает его в те экшены, которые явно указывают его в параметрах:</p>
11
<p>Любую информацию о HTTP-запросе, включая данные формы, можно получить из объекта $request. Laravel передает его в те экшены, которые явно указывают его в параметрах:</p>
12
<p>При реализации поисковых форм, данные формы должны оставаться внутри формы после запроса. Мы это наблюдаем повсеместно, особенно в поисковых системах. Для реализации такого поведения нужно выполнить два условия. Первое - передать данные в шаблон, второе - подставить их в нужные места. Для этого элементы библиотеки генерации формы принимают дополнительный параметр:</p>
12
<p>При реализации поисковых форм, данные формы должны оставаться внутри формы после запроса. Мы это наблюдаем повсеместно, особенно в поисковых системах. Для реализации такого поведения нужно выполнить два условия. Первое - передать данные в шаблон, второе - подставить их в нужные места. Для этого элементы библиотеки генерации формы принимают дополнительный параметр:</p>
13
13