1

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

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

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

在表单类的配置方法中,我有:

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

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

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

4

3 回答 3

4

您不需要为此设置小部件,只需在表单调用的配置方法中即可。

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

真的没有必要覆盖一个方法。

此外,为了让这个工作你必须像这样启动你的表格

<?php
$this->form = new ContractForm(new Contract(), array('created_by' => $this->getUser()->getId()));`
?>
于 2010-08-04T11:29:50.960 回答
0

我建议你可以在你的类sfDoctrineActAsSignablePlugin上使用这种行为。

于 2014-04-25T08:33:59.097 回答
0

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

$this->widgetSchema['created_by'] = new sfWidgetFormInputText(array('default' => $this->getUser()->getId()));
于 2014-04-16T07:15:11.303 回答