2011-02-08 81 views
1

我工作的這個系統基於用戶和慈善賬戶,每個人都有一個用戶賬戶,但慈善機構有一個用戶賬戶和一個慈善記錄,用戶賬戶綁定了一個包含一些額外字段的用戶賬戶。如何在Symfony中提交表單後切換哪些字段?

我需要一個註冊表格,允許用戶註冊爲個人(只有用戶帳戶)或慈善機構(用戶帳戶+慈善記錄),因此我已將慈善表單嵌入到我的用戶註冊表單中,並且在頂部添加一個單選按鈕問題以找出用戶註冊的帳戶類型。

我需要的是,當用戶表示他們希望一個慈善機構帳戶的慈善領域成爲必需,當他們表明他們想成爲他們的個人不成爲(我隱藏他們與Javascript時,他們選擇這)。

我試着運行此,當用戶選擇的慈善機構,但似乎並沒有工作:

$this->register_form->getEmbeddedForm('charity')->getValidator("name")->setOption("required", true) 

任何人都可以讓我知道該怎麼做了正確的方式,這是?

+0

我認爲這是正確的,是什麼讓你說這是行不通的?也許你正在建立窗體時顯示它,當保存你的對象,你沒有這樣做的第二次? – greg0ire 2011-02-09 14:17:28

回答

0

首先,最好將這個邏輯放在表單類中,而不是在動作中執行。其次,在嵌入表單時,它將validatorschema複製到父表單,這就是爲什麼在嵌入表單上更改選項本身沒有任何作用。

完成你正在嘗試做的可能是另外一個辦法:

class myForm extends BaseForm { 

    public function configure() { 
    // set up widgets, validators etc 
    } 

    protected function doBind($values) { 
    is (!empty($values['charity']['charityCheckbox']) { 
     $this->validatorSchema['charity']['name']->setOption('required', true); 
    } 
    parent::doBind($values); 
    } 

} 
+0

謝謝你,我知道必須有一種方式來完成它。 – pogo 2011-02-14 09:51:56

相關問題