Symfony - 在保存时设置表单值

时间:2010-08-04 09:55:29

标签: php symfony1 symfony-1.4 symfony-forms

一个简单的问题。我有一个symfony形式。当我保存表单时,我希望我的created_by字段在保存时自动设置。

所以,我将当前用户ID作为选项传递给表单:

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

在表单类的configure方法中我有:

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

如果我有一个created_by小部件并将其设置为隐藏,这将很有效,但是,我不希望显示一个字段,因为用户可以使用firebug或其他工具轻松操作。

所以我的问题是,如果字段不作为窗口小部件存在,如何保存列值?

3 个答案:

答案 0 :(得分:4)

您不需要为此设置一个小部件,只需在表单调用的configure方法中。

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

确实没有必要覆盖方法。

此外,您必须像这样启动表单

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

答案 1 :(得分:0)

或者在ContractForm类中,您可以添加到configure()

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

答案 2 :(得分:0)

我建议您在课程sfDoctrineActAsSignablePlugin上使用此行为。