2012-04-18 7 views
1

どうすればいいですか?私はsymfony 1.4 forms - フォームの送信中に1つのフィールドの値を設定する方法は?

をしようとしている:上から

$this->form->getObject()->setWebsiteid($website); 

$this->form->setDefault('websiteid', $website); 

$request->setParameter('websiteid', $website); 

どれも動作しません

私のコード:

$this->form = new sfGuardRegisterForm(); 

if ($request->isMethod('post')) 
{ 
    $website=new Website(); 
    $website->save(); 

    $this->form->bind($request->getParameter($this->form->getName())); 
    if ($this->form->isValid()) 
    { 
    /* here I try do that */ 
    $this->form->getObject()->setWebsiteid($website); 
    /* here I try do that end */ 

    $user = $this->form->save(); 
    $this->getUser()->signIn($user); 

    $this->redirect('@homepage'); 
    } 
} 

答えて

1

があなたのUserモデルのwebsiteid一部ですか?

フォームにwebsiteidのウィジェットを使用していますか?

保存した後にあなたが値を追加することができます。

$user = $this->form->save(); 
$user->setWebsiteid($website); 
$user->save(); 

をしかし、最初のソリューションは、私にはOKらしい。..

+0

はい はい おかげで、それは動作しますが、これは本当にISN私 – quardas

+1

に閉じ最良のアプローチです。ロジックは、doSave()のオーバーライドを介してsave()メソッドの一部でなければなりません。この方法では、フォームに関連するものはすべて同じトランザクション内にあり、呼び出しコードをリーンに保ちます。 –

関連する問題