2010-12-08 98 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正如你所提到。