Php Symfony 4一个实体的多种形式(步骤)
我有一个包含多(30)个字段的表和实体类。我不想构建一个大表单,但例如3个表单(每个表单10个字段),这将在表中的同一记录中保存以下字段。 这在纯PHP或其他更简单的框架中是很容易做到的,在这些框架中我是手动完成的。在Symfony中如何实现这一点,许多事情都更加自动化了?Php Symfony 4一个实体的多种形式(步骤),php,forms,symfony,Php,Forms,Symfony,我有一个包含多(30)个字段的表和实体类。我不想构建一个大表单,但例如3个表单(每个表单10个字段),这将在表中的同一记录中保存以下字段。 这在纯PHP或其他更简单的框架中是很容易做到的,在这些框架中我是手动完成的。在Symfony中如何实现这一点,许多事情都更加自动化了? 我想找一个通用的技巧,使用哪种方法。嘿,对于构建表单,您可以使用创建一个代表您的实体的php类,不要忘记@ORM\entity()注释。 然后只需使用php-bin/console-generate:doctor:form-
我想找一个通用的技巧,使用哪种方法。嘿,对于构建表单,您可以使用创建一个代表您的实体的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类,在每个类中,我只定义了实体类字段的三分之一,在第二和第三种表单类型中使用的所有字段都必须是可选的——类似于我所寻找的。您的答案只是文档中的基本示例。好的,为您的反馈感到高兴,希望您认为它解决了您的问题,或者对找到您的解决方案最有帮助。非常感谢。干杯