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

时间:2013-09-06 12:50:17

标签: forms symfony

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

class UserFormType 
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // ...
        $builder->add('email', 'text');
    }
}

如果我想为用户定义另一种表单类型该怎么办:

  • 在这种情况下有哪些好的命名约定?
  • 在哪里放逻辑?将一个单独的FormType类或另一个方法转换为现有的一个?

1 个答案:

答案 0 :(得分:2)

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

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

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

如果您需要根据您拥有的用户类型调整您的表单,您可以使用事件监听器 http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html

相关问题