0

我有一个 symfony 表单,其中包含一些用户无法编辑但在提交表单时自动设置的隐藏字段。我似乎无法设置的一个字段是用户 ID。表单是安全的,因此需要验证才能显示(sfDoctrineGuardPlugin)。

我正在寻找的是将“user_id”字段设置为当前登录用户名的表单。我在类文件中试过这个。

    if ($this->isNew() && ! $this->getSeller_Id())
    {
        $this->setSeller_Id($this->getUser()->getGuardUser()->getUsername());

    }

但它总是返回一个错误,指出当前表中没有用户字段。我希望我解释得对。

4

2 回答 2

2

您可以将用户名作为选项传递给表单。在您的控制器中:

 $myform = new myObjectForm(NULL, array('username' => $this->getUser()->getGuardUser()->getUsername());

然后在doSave表单的功能中:

 public function doSave($con = null)
 {
    if ($this->getObject()->isNew() && !$this->getObject()->getSeller_Id())
    {
        $this->getObject()->setSeller_Id($this->options['username']);
    }
 }
于 2012-07-07T07:42:11.777 回答
0

不要在隐藏字段中设置 user_id。有人可以通过萤火虫改变它。我更喜欢在 proccessForm() 中使用此代码

试试这个(编辑):

    $form = new YourForm();
    $this->user = $this->getUser()->getObject();

    $form->getObject()->setSellerId($this->user->getId());

    $form->bind($request->getParameter($form->getName()));
于 2012-07-08T11:35:33.827 回答