Php Symfony 4一个实体的多种形式(步骤)

Php Symfony 4一个实体的多种形式(步骤),php,forms,symfony,Php,Forms,Symfony,我有一个包含多(30)个字段的表和实体类。我不想构建一个大表单,但例如3个表单(每个表单10个字段),这将在表中的同一记录中保存以下字段。 这在纯PHP或其他更简单的框架中是很容易做到的,在这些框架中我是手动完成的。在Symfony中如何实现这一点,许多事情都更加自动化了? 我想找一个通用的技巧,使用哪种方法。嘿,对于构建表单,您可以使用创建一个代表您的实体的php类,不要忘记@ORM\entity()注释。 然后只需使用php-bin/console-generate:doctor:form-

我有一个包含多(30)个字段的表和实体类。我不想构建一个大表单,但例如3个表单(每个表单10个字段),这将在表中的同一记录中保存以下字段。 这在纯PHP或其他更简单的框架中是很容易做到的,在这些框架中我是手动完成的。在Symfony中如何实现这一点,许多事情都更加自动化了?
我想找一个通用的技巧,使用哪种方法。

嘿,对于构建表单,您可以使用创建一个代表您的实体的php类,不要忘记
@ORM\entity()
注释。
然后只需使用
php-bin/console-generate:doctor:form-App:Entity
通过使用给定实体类的元数据映射来生成表单类型类

这取决于您的模型逻辑,您可以将表单解耦为一个父表单和另一个子表单…然后对于每个子
表单类型
您可以这样称呼它:

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进行良好的实践。将表单解耦是更好的解决方案,请参阅以下文章:

您可能想看看它的功能,它完全满足您的需要:为大型表单创建多步骤表单。我有一个相当好的经验,它与Symfony 4的作品


请同时观看演示。

这可能不是我要找的。@InforMat请您详细解释一下您要找的内容。我解决了这个问题:简单地定义了Form1Type、Form2Type和Form3Type类,在每个类中,我只定义了实体类字段的三分之一,在第二和第三种表单类型中使用的所有字段都必须是可选的——类似于我所寻找的。您的答案只是文档中的基本示例。好的,为您的反馈感到高兴,希望您认为它解决了您的问题,或者对找到您的解决方案最有帮助。非常感谢。干杯