2010-08-04 65 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()));