合并字段Symfony2

时间:2015-11-09 10:07:11

标签: forms symfony

我有一个Form类型,如下所示:

class TestType extends AbstractType{

   public function buildForm(FormBuilderInterface $builder, $options){
     $builder->add('type', 'text');
     $builder->add('name', 'text');
   }
}

现在我想要创建一个包含两个TestType的表单类型,但只有一个'type'字段用于其中使用的TestType个字段:

class DoubleTestType extends AbstractType{

   public function buildForm(FormBuilderInterface $builder, $options){
     $builder->add('first', new TestType());
     $builder->add('second', new TestType()); // however this will create one type 'field' for each of the SubForms
   }
}

此方法会创建两个TestType,每个'type'个字段都包含'type'个字段,但我希望它们之间共享'type'字段。一种方法是在DoubleTestType中创建type字段,并隐藏TestType中的DoubleTestType字段,并使用在{上注册的事件侦听器设置其值{1}}。我正在寻找一种更清洁的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以创建form field type而不是表单类型,然后使用它。


或者您可以通过选项参数控制字段:

public function buildForm(FormBuilderInterface $builder, $options){ 
    $type = isset($options['type']) ? $options['type'] : false; 
    if ($type) { 
        $builder->add('type', 'text');
    }
    $builder->add('name', 'text');

然后:

$builder->add('first', new TestType(array('type' => true)));
$builder->add('second', new TestType());