2010-03-21 26 views
1

我能夠做到在一組的所有複選框以下(在行動)檢查:具體複選框symfony的1.4

$this->form->getWidget('some_form_field')->setAttribute('checked', 'checked'); 

...但我無法設置特定的複選框勾選基於從數據庫返回的數據。

我喜歡的東西后我:

$this->form->getWidget('some_form_field')->setAttributes(array(....)); 

...在那裏我可以指具體的複選框以某種方式打勾或數組傳遞給它。

在這個symfony文檔中沒有什麼特別的,我已經足夠嘗試一打組合來使它工作。

任何幫助,將不勝感激。

謝謝。

回答

3

這聽起來有點不尋常?你使用生成的推動/教條形式嗎?他們應該自動處理它。

無論採用哪種方式,設置checked屬性都不是實現此目的的正確方法。更好的方法是在表單中(因爲據我記得,這 - $> widgetSchema保護)做:

$this->widgetSchema['some_form_field']->setDefault(array('value1', 'value2')); 

那麼這將導致使用這些值部件進行檢查。

(如果那是不對的,我寫了我的頭頂,我可以挖掘出一些代碼和檢查,所以讓我知道!)

+0

@benlumley ...感謝,但形式獲取呈現「沒有被選中「,這樣當我從數據庫中取出數據時,我可以在模板中渲染表單,並將這些複選框預先檢查並以這種方式存儲在數據庫中。正如我上面提到的,我可以用它來預先檢查它們的全部(無論是在表單類還是在行動中),但我需要控制各個複選框的級別。 – Tom 2010-03-21 19:26:12

+1

...實際上你的上面的代碼是正確的方向。剛剛得到它的工作:$ this-> form-> getWidget('some_form_field') - > setDefault(array('1','2')); 謝謝! – Tom 2010-03-21 19:29:54

+0

您仍然可以通過向表單添加一個方法來接受輸入並在相關複選框中設置「已選中」來實現此目的。然後,您可以從操作中調用此方法並將其傳遞給您的數據。 如果您需要在視圖中執行此操作(在我看來這有點麻煩),也有辦法這麼做 - 每個小部件的render方法都可以接受當前值的數組。 – benlumley 2010-03-21 19:33:07