Forms 如何在Symfony中声明不同的表单类型?

Forms 如何在Symfony中声明不同的表单类型?,forms,symfony,Forms,Symfony,当我为任意实体定义表单类型时,比如说User,我可以添加一个UserFormType类,如下所示 class UserFormType { public function buildForm(FormBuilderInterface $builder, array $options) { // ... $builder->add('email', 'text'); } } 如果要为用户定义另一种表单类型,该怎么办: 在这种情况下

当我为任意实体定义表单类型时,比如说
User
,我可以添加一个UserFormType类,如下所示

class UserFormType 
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // ...
        $builder->add('email', 'text');
    }
}
如果要为用户定义另一种表单类型,该怎么办:

  • 在这种情况下,什么是好的命名约定
  • 把逻辑放在哪里?是作为一个单独的FormType类,还是作为另一个方法加入到现有的FormType类中

您可以根据需要为每个实体定义任意多的类型

如果我需要不止一种类型,我通常会使用“标准”entitynameType,对于其他类型,我会附加一些与我使用它的地方相关的关键字。例如,如果一个表单仅用于更新状态UserStatusType

您必须使用另一个类,因为您正在扩展AbstractType,并且构建表单的方法必须是buildForm

如果需要根据用户的类型调整表单,可以使用事件侦听器

只需创建另一个类型,如将绑定用户的
AlternativeUserType
。只要确保它符合所有用户的
约束