Symfony 4 несколько форм (шагов) для одной сущности

У меня есть таблица и класс сущности с несколькими (30) полями. Я хочу создать не одну большую форму, а, например, 3 формы (по 10 полей каждая), которые сохранят следующие поля в одной записи в таблице. Это просто сделать на чистом PHP или другом более простом фреймворке, где я делаю это вручную. Как это сделать в Symfony, где многие вещи более автоматизированы? Ищу общий совет, какой подход использовать.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
2 371
2

Ответы 2

Привет, для создания формы, вы можете использовать компонент формы symfony, просто создав класс php, который представляет вашу сущность, и не забывайте аннотацию @ORM\Entity(). Затем просто используйте php bin/console generate:doctrine:form App:Entity для создания класса типа формы, используя отображение метаданных данного класса сущности.

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

class ParentType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title')
            ->add('summary', Child1Type::class)
            ->add('content', Child2Type::class)
            ...
     }
}

И после этого просто вернитесь к своему контроллеру:

public function editAction(Request $request, entity $entity)
{
    $form = $this->formFactory->createForm(ParentType::class, $entity);
    if ($form->isValid() && $form->isSubmitted()) {
       //perform some action
    }
}

Вы также можете использовать DTO для хорошей практики. Лучшее решение для разделения вашей формы, посмотрите эти статьи: https://williamdurand.fr/2013/12/16/enforcing-data-encapsulation-with-symfony-forms/http://verraes.net/2013/04/decoupling-symfony2-forms-from-entities/

Вероятно, это не то, что я ищу.

Infor Mat 10.01.2019 10:35

@InforMat Не могли бы вы подробнее объяснить, что ищете?

famas23 10.01.2019 15:13

Я решил это: просто я определил что-то вроде классов Form1Type, Form2Type и Form3Type, в каждом я определил только третью часть полей из класса сущности, и все поля, которые используются во втором и третьем типе формы, должны быть необязательными - что-то в этом роде Я искал. Ваш ответ - это просто базовый пример из документации.

Infor Mat 14.01.2019 22:23

Хорошо, рада вашему отзыву, желаю, чтобы вы думали, что он решил вашу проблему или был самым полезным в поиске вашего решения. Спасибо. Ваше здоровье! -

famas23 15.01.2019 03:15

Возможно, вы захотите взглянуть на https://github.com/craue/CraueFormFlowBundle, он делает именно то, что вы хотите: создает многоступенчатые формы для больших форм. У меня довольно хороший опыт работы с ним, работает с Symfony 4.

Пожалуйста, чек и демо.

Существует нерешенная проблема с полями mapped => false - я не рекомендую этот пакет

anyapps 08.07.2021 11:25

Другие вопросы по теме