我有一個非常簡單的形式與來自教義模型的一些字段。Symfony窗體不尊重集默認值
$this->widgetSchema['fields'] = new sfWidgetFormDoctrineChoice(array(
'model' => 'FieldModel',
'expanded' => true,
'multiple' => true,));
$this->validatorSchema['fields'] = new sfValidatorDoctrineChoice(array(
'model' => 'FieldModel',
'multiple' => true,));
這些字段以複選框的形式呈現,我能夠檢查並正確保存。這個'fields'字段被轉換爲json結構並以文本形式保存到數據庫中。到現在爲止還挺好。
注意:字段'fields'作爲TEXT存儲在數據庫中,但用戶應該能夠從複選框列表中選擇值。
當我想要默認選中某些複選框時出現問題。
我試圖做的:
$this->setDefault('fields', array('key1','key2','key3'));
其中「keyX」對應於數據庫中的主鍵(字符串)字段的實際值。
如果我做了
$this->getDefault('fields');
我回去正是我把以前。
但是,symfony不會輸出任何複選框。我甚至試圖刪除'擴展'和'多個'選項的選擇部件,所以我得到一個簡單的選擇框,並提供只有一個值作爲默認選定。
設置其他小部件(文本輸入,選擇等)的默認值。
Btw;場模型是國際化的。不知道這裏是否重要,因爲存儲/檢索工作如預期那樣。
另外;該表單通過include_partial()方法呈現爲另一個表單的一部分。這可以破壞什麼嗎?在「父」窗體類:
$this->embedRelation('TheRelationThatBugsMe');
然後在_form.php這個爲「父」:
include_partial('the_relation_that_bugs_me/form', array('form' => $form['TheRelationThatBugsMe']));
沒有人有一個想法,我可能出現了問題,或者至少可以給我一些指導,我應該從哪裏開始挖掘?
[UPDATE]
如果創建的形式「fields2」的新字段(即不存在作爲在數據庫中的字段),並使用完全相同的代碼來創建插件,驗證器並設置默認值,那麼默認值將被正確渲染。它如何不起作用設置映射到數據庫中列的字段的默認值?