Веб-разработка на PHP
2026-02-26 19:01 Diff

Создание сущности включает в себя два действия: отображение формы и обработка данных формы. За каждое из этих действий отвечает собственный маршрут. Вот несколько примеров:

Пользователь

  • GET /users/new
  • POST /users

Курс

  • GET /courses/new
  • POST /courses

Сотрудник компании (пример вложенного маршрута)

  • GET /companies/3/users/new
  • POST /companies/3/users

Отображение формы

Обработчик

Шаблон

Содержимое обработчика зависит от того, какой используется инструментарий. В местах, где есть билдеры форм, в этом обработчике создается форма как некоторый объект и отправляется в шаблон.

Билдер берет на себя большое количество задач: обрабатывает вывод ошибок, занимается валидацией и подготовкой данных. Некоторые билдеры знают про ту сущность, с которой они работают. Поэтому могут строить формы в полностью автоматическом режиме.

В нашем примере такого нет, поэтому все действия делаются руками. Кроме данных в шаблон передается массив errors. Это нужно, потому что форма используется обоими обработчиками: одним — только для отображения новой формы, другим — для отображения формы в случае наличия ошибок.

Обработка данных формы

Своего шаблона у таких обработчиков нет. Если данные оказались не валидны, то этот обработчик рисует форму обработчика new и отправляет ее вместе с кодом ответа 422 (Unprocessable Entity). Если данные корректны, то выполняется основная логика обработчика — происходит сохранение школы в базу данных $repo->save($schoolData). Затем редирект на список школ с оповещением через флеш об успешном добавлении.