2011-05-26 6 views
2

私はS2で単純なCMSを構築していますが、アーティクル形式のリレーショナルカテゴリを処理するのに少し問題があります。Symfony2:関係するdoctrineデータを使った処理形式

CategoryTypeとアクションのコード:http://codepaste.net/ahyoig symfonyサイトのチュートリアル/マニュアルのようなものです。

フォームはうまく見えますが、データを処理すると(マニュアルのようにも)、エラーが表示されます。選択フィールドに「期待される型の配列、文字列があります」と表示され、解決方法はわかりません。

答えて

2

multiplefalseに設定しているために問題が発生していると思います。これは、フォームタイプが文字列値を返すことを意味します(multipleからfalseに単一の値を設定します)が、関係はおそらく多対多の関係として設定されています。

オプションをtrueに設定すると、文字列の代わりに配列がオブジェクトに送信されます。これはアプリケーションが想定しているものです。次に、HTMLでCategoryTypeのリストボックスの外観が気に入らない場合は、form themingをSymfony2で使用して別の方法でレンダリングすることができます。このことができます

希望、 マット

1

あなたはカテゴリタイプを必要としません。 $ categories配列の作成も役に立たない。

<?php 

use Doctrine\ORM\EntityRepository; 

//... 

$article = new Article(); 

$form = $this->get('form.factory') 
      ->createBuilder('form',$article) 
      ->add('category', 'entity', array 
      (
       'class' => 'CMSBackBundle:Category', 
       'query_builder' => function(EntityRepository $er) 
       { 
        return $er->createQueryBuilder('c') 
          ->orderBy('c.title', 'ASC'); 
       }, 
       'expanded' => false, 
       'multiple' => false 
      ) 
      // ... 
      ->getForm(); 

最良の選択は、ネイティブのエンティティフォームタイプを使用することです

関連する問題