2012-03-30 24 views
1

symfony 2のフォームをmongoDBドキュメントと使用する際に問題があります。Symfony2 mongodbバンドルドキュメント1対多フォーム

/** 
* @Assert\Collection 
* @MongoDB\ReferenceMany(targetDocument="Acme\ManagerBundle\Document\Tags") 
*/ 
protected $tags; 

タグ:私は関係がこのように宣言されて

タグに関連oneToMany(参照)で私の最初の文書(ポスト)を表しますフォームを持つようにしようとしている

IDと名前を持っています。

私はそれはフォームが選択肢を示すが、そのsubmitedフォームが有効でないとthhisエラーを示すキープ一度

$form = $this->createFormBuilder($tag)->add('tags', 'choice', array('choices' => $tags, 'multiple' => true, 'expanded' => true, 'empty_value' => true, )) 

を動作させるために多くのことを試してみました:

「フィールド "0"、 "1"、 "2" が「

予想されていなかった私はこれも試してみた:symfony2 form choice and mongodb

object(Doctrine\Common\Collections\ArrayCollection)#795 (1) { 
    ["_elements":"Doctrine\Common\Collections\ArrayCollection":private]=> 
    array(2) { 
    [0]=> 
    object(Acme\ManagerBundle\Document\Tags)#723 (2) { 
     ["id":protected]=> 
     string(24) "4f7a0eb1ecd111b99c3d2f25" 
     ["name":protected]=> 
     string(6) "Fruits" 
    } 
    [1]=> 
    object(Acme\ManagerBundle\Document\Tags)#720 (2) { 
     ["id":protected]=> 
     string(24) "4f7a0ec7ecd111b99c3d2f26" 
     ["name":protected]=> 
     string(10) "Vegetables" 
    } 
    } 
} 

をだから今、私は、「フィールド」を持っている理由私が理解:

しかし、それの使用はちょっと

UPDATEを混乱さは

これはポストがsubmitedされた後、私は得るものです0 "、" 1 "、" 2 "は期待されませんでしたが、なぜSymfonyが処理しないのか分かりません。

私は私が私のオブジェクトと関連するオブジェクトを水和します素敵な形式を持っているか見当がつかない可能バンドルを見ていないが、何も

してきた、 は、誰もがこの問題やその他のためのソリューションを持っていませんこれを解決するアイデア?

ありがとうございました!

+0

あなたはその質問から何を試しましたか?答えは、DoctrineMongoDBBundleをインストールし、 'エンティティ'の代わりに 'ドキュメント'を使用すると言います。 – meze

+0

DoctrineMongoDBBundleはすでにインストールされていますが、「エンティティ」の代わりに「ドキュメント」を使用していますが、同じ問題があります。 –

答えて

0

データが表示されていない限り、私はここで最高の推測しかできません。

あなたのコード行は次のように見えるように感じます。

$tags = $post->getTags(); 

$fixedTags = array(); 
foreach ($tags as $tag) { 
    $fixedTags[$tag->getId()] = $tag->getName(); 
} 

$form = $this->createFormBuilder($post) 
    ->add(
     'tags', 
     'choice', 
     array(
      'choices' => $fixedTags, 
      'multiple' => true, 
      'expanded' => true, 
      'empty_value' => true 
     ) 
    ); 

ここで、$タグデータをこのような形式で取得していると思います。

array(0 => (Object)Tag, 1 => (Object)Tag, 2 => (Object)Tag) 

あなたが本当に望むものはおそらくこのようです。もしそうでない場合

array('topic1' => 'Topic 1', 'topic2' => 'Topic 2', 'topic3' => 'Topic 3') 

、いくつかのデータ出力で応答し、私たちはいくつかのより多くのを助けることができるでしょう確信しています。

+0

こんにちはジェイミーとありがとう、私はあなたがテストアレイ( 'topic1' => 'トピック1'など、そして今はエラーです: "フィールド" 0 "期待されていなかった" –

+0

)アイデアは?私はまだこの で立ち往生していたフィールドが「0」 予想されていなかったと私は本当にそれを解決する方法がわからない! おかげ –

+0

をあなたの更新を見る。データが間違っています私はあなたのデータがうまくいくように見えるべきだと私の投稿を更新するでしょう。私はsymfonyを使用しないので、私はここで専門家ではないことを指摘します。 http://symfony.com/doc/current/reference/forms/types/choice.html –

0

choiceフィールドはデフォルトで保存されません(フォーム提出時に手動で行うこともできます)。 documentタイプを調べる必要がありますが、それは明らかに文書化されていませんが、基本的にはentityhereと同じタイプです。

これは3年前からのものです。まあ、他の人が私が推測するこのページを見つけるためにここにあります。

関連する問題