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 に答える