我创建了一个为实体添加自动完成功能的表单类型,但它需要为每个实体配置一些配置,即:我必须将配置传递给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表单组件的理解,它应该是我描述的方式;
答案 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
}