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






Привет, для создания формы, вы можете использовать компонент формы 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/
@InforMat Не могли бы вы подробнее объяснить, что ищете?
Я решил это: просто я определил что-то вроде классов Form1Type, Form2Type и Form3Type, в каждом я определил только третью часть полей из класса сущности, и все поля, которые используются во втором и третьем типе формы, должны быть необязательными - что-то в этом роде Я искал. Ваш ответ - это просто базовый пример из документации.
Хорошо, рада вашему отзыву, желаю, чтобы вы думали, что он решил вашу проблему или был самым полезным в поиске вашего решения. Спасибо. Ваше здоровье! -
Возможно, вы захотите взглянуть на https://github.com/craue/CraueFormFlowBundle, он делает именно то, что вы хотите: создает многоступенчатые формы для больших форм. У меня довольно хороший опыт работы с ним, работает с Symfony 4.
Пожалуйста, чек и демо.
Существует нерешенная проблема с полями mapped => false - я не рекомендую этот пакет
Вероятно, это не то, что я ищу.