在父表单symfony2上映射子表单的数据

时间:2014-12-31 06:11:06

标签: forms symfony

我创建了一个为实体添加自动完成功能的表单类型,但它需要为每个实体配置一些配置,即:我必须将配置传递给options数组,因此我决定为每个实体创建一个新的FormType使用我创建的AutoCompleteType并重用它们。但是我想要这些Formtypes,即:每个特定实体的那些,在调用getData()时返回实体,现在发生的是我必须首先检索该字段包含AutoCompleteType的ParentForm,然后调用getData()来检索我的实体。如何直接在ParentForm上映射此信息?

//the FormType of Some Entity using the AutoComplete
...
class SomeEntityAutoCompleteType extends AbstractType{
    public function buildForm(FormBuilderInterface $builder, array options){
       $builder->add('some_entity', 'entity_autocomplete', array(...));
    }
}


    //the controller
    public function someAction(){
        $form = $this->get('form.factory')->create(new SomeEntityAutoCompleteType());
        ...
        //I want the below line to return my entity
        $form->getData();
        //but I have to use this one right now
        $form['some_entity']->getData()
    }

note :我还没有真正测试过其他方法,但根据我对Symfony表单组件的理解,它应该是我描述的方式;

1 个答案:

答案 0 :(得分:0)

我通过将SomeEntityAutoCompleteType的父类型设置为我创建的主要自动完成类型并使用setDefaultOptions()方法配置选项来解决此问题。

//SomeEntityAutoCompleteType
public function setDefaultOption(OptionsResolverInterface $resolver){
    $resolver->setDefaults(...);
}

public function getParent(){
    return "autocomplete_type";//this is the main autocomplete type I mentioned
}