2011-10-11 75 views
3

我使用嵌入式表单来创建一个注册表单,该表单包含多个相关实体的字段。正如我在这里对我的问题所解释的:
Symfony2 form where the data objects doesn't match exactly what needs to be filled in如何重新使用Symfony2中遗留的某些字段的表单

这工作得很好。但是,假设我想重新使用我嵌入的其中一种形式,但留下了一些字段。
那么我有什么选择?

  • 我是否创建了一个额外的formType来扩展原始的formType?
  • 我在决定留下一些领域吗?

虽然我觉得这不像是一个观点决定。对于每种不同的用例来说,扩展对我来说都是一种糟糕的重用练习。
其他人怎么解决这个问题?

感谢,

迪特

+0

您还应该查看继承数据,它可以让您将基本表单与两个自定义表单组合在一起。 http://symfony.com/doc/current/cookbook/form/inherit_data_option.html – 10us

回答

4

我认为最好的办法是创建一个抽象基类,让你的类型扩展。这里有一个简单的例子:

namespace Acme\Bundle\DemoBundle\Form\Type; 

use Symfony\Component\Form\AbstractType; 

abstract FooBaseType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     // Add all fields common for your other types. 
    } 
} 

现在你可以扩展它的包括丢失的领域

namespace Acme\Bundle\DemoBundle\Form\Type; 

class ExampleType extends FooBaseType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     parent::buildForm($builder, $options); 
     // Your missing fields 
    } 
} 
+0

Idd,我没有看到其他选择。对我来说似乎有点不方便,但至少有人同意我这是要走的路:)谢谢! – Dieter

相关问题