2011-11-13 14 views
0

私のアプリケーションには3つのテーブルが必要です。 -event,event_categoryおよびevent_category_connection。最初の2つのテーブルの間に多対多の関係があります。私がやろうとしているのは、のカテゴリをEventForm(Symfony-doctrineモデルによって自動生成されます)に追加することです。イベントを保存した後、自動的に新しいイベントと既存のカテゴリとの間の接続を追加できるようになります。symfony - 自動生成モデルフォームの追加フィールド

$this->widgetSchema['event_category_id'] = new sfWidgetFormDoctrineChoice(array(
    'model' => 'EventCategory', 
    'add_empty' => false, 
    'multiple'=>"true", 
    'expanded'=>true)); 
$this->setValidator('event_category_id', new sfValidatorDoctrineChoice(array(
    'model' => 'EventCategory', 
    'required' => false))); 

これは、私が自動生成されたEventFormに追加するものです。私が理解していることは、作成操作中に新しいオブジェクトが$form->getObject()->save()関数を介して保存されているということです。これは私がエラーになっている場所です(不明なレコードプロパティ/関連コンポーネント)。

どのように私はこの操作を処理することができます。これは私がコードしようとしているものです:

新しいオブジェクトの1つのアクション - >オブジェクトを取得する - > IDを取得する - >カテゴリと新しいオブジェクトの間に多くの関係を保存します。

Krzycho。

+0

あなたのスキーマイベント、event_cetegoryとevent_category_connectionを投稿することができますか? – denys281

答えて

0

まずは$form->save()をしなければならない、そして、あなたは(これは一つのアプローチである、そこには多くの方法は、おそらくあります)あなたの関係を保存します。

protected function processForm(sfWebRequest $request, sfForm $form) 
    { 
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName())); 
    if ($form->isValid()) 
    {  
     $obj = $form->save(); 

     $this->saveRelations($request, $obj); 
     // save the event_category objects in an array: $event_categories 
     // $obj->EventCategory = $event_categories; 
     // $obj->save(); 
    } 
    // ... 
    } 
関連する問題