2010-12-08 72 views
1

我在embedRelation的选项中看到可以传递一个表单类,所以我认为我可以简单地设置一个新表单并根据需要对其进行修改,然后将其作为类传递给embedRelation和voila我的表单会按我的愿望行事。不是这样的,那么我该怎么做!?Symfony 1.4 embedRelation未设置字段

例如由magicForm.class.php:

function configure() 
{ 
    $magicForm = new magicForm(); 
    unset($magicForm['fieldName']); 
    $this->embedRelation('Magic',$magicForm); 
} 

我期望这将嵌入一个漂亮的形式减去“的fieldName”字段中,但它不中,整个形式包埋无变化。

那么,如何在嵌入它之前自定义表单,而不是使用上面示例完美适用的embedForm?

回答

1

embedRelation取得Form类的名称而不是表单本身的一个实例,它基本上完成了创建该类的一个实例并设置它的所有内容。如果你想以后修改的形式,你需要通过访问类的各种模式对象这样做:

function configure() 
{ 

    $this->embedRelation('Magic','magicForm'); 

    unset($this['Magic']['fieldName']); 

    $this->getEmbeddedForm('Magic') 
     ->widgetSchema['anotherField'] 
     ->setOption('class', 'some_class'); 
    //etc.. 

} 

为了什么它的价值我从来没有使用嵌入的关系......我只是做它embedForm正如你所提到。