0

我目前正在用 symfony 表单做这种事情

$this->myForm = new MyForm();
$this->myForm->customConfigureMethod($this->getUser()->getGuardUser());

因为我需要根据用户配置一个 DoctriineChoice 小部件。

我宁愿做这种事情

$this->myForm =new myCustomConfiguredForm($this->getUser()->getGuardUser());

自定义是表单实例化的一部分。

有谁知道我怎么能做到这一点?我想我可能对表单的 configure() 和 setup() 函数之间的区别有点不清楚,所以无法清楚地思考它。

4

1 回答 1

1

您应该将用户对象作为选项传递。这是一个例子:

class ProductForm extends BaseProductForm
{
  public function configure()
  { 
    // or use an instance variable if you need the user in an another method too
    $user = $this->getOption('user');

    if (!$user instanceof sfBasicSecurityUser)
    {
      throw new InvalidArgumentException('A user object is required as "user" option in ' . __METHOD__);
    }

    // do something with the user...
  }

}

$form = new ProductForm(array(), array('user' => $this->getUser()));
于 2013-08-17T21:17:44.410 回答