2010-08-04 63 views
1

一個簡短的問題。我有一個symfony表單。當我保存表單時,我希望我的created_by字段在保存時自動設置。Symfony - 保存設置表格值

所以,我傳遞當前用戶ID作爲形式的選項:

$this->form = new ContractForm(null,array("created_by"=>$this->getUser()->getId())); 

並在窗體類的配置方法,我有:

$this->setDefault('created_by', $this->getOption("created_by")); 

如果我有一個created_by小部件,並將其設置爲隱藏,這將工作得很好,但是,我不希望顯示一個字段,因爲用戶可以輕鬆地使用螢火蟲或其他工具進行操作。

所以我的問題給你,如果該字段不作爲一個小部件存在,我該如何保存一個列值?

回答

4

您不需要爲此提供一個窗口小部件,只需在窗體調用的configure方法中。

<?php 
$this->getObject()->setCreatedBy($this->getOption('created_by')); 
?> 

確實沒有必要重寫方法。

而且這個工作你幾乎必須啓動表單這樣

<?php 
$this->form = new ContractForm(new Contract(), array('created_by' => $this->getUser()->getId()));` 
?> 
+0

嘿,亨裏克,這正是我最後做的。謝謝回覆 :-) – Flukey 2010-08-04 14:13:29

0

或者在你的ContractForm類,你可以添加到配置()

$this->widgetSchema['created_by'] = new sfWidgetFormInputText(array('default' => $this->getUser()->getId()));