1

ドロップダウンリストにフォームを作成しようとしています。データはエンティティから取得されます。問題は、例外が与えられた場合に、タイプ「object」、「integer」のExpected引数を取得していることです。

これが私がフォームにドロップダウンリストを入力しようとしている方法です:

public function buildForm(FormBuilder $builder, array $options)
{
   $builder->add('country', 'entity', array(
        'class' => 'SciForumVersion2Bundle:Country',
        'property' => 'country',
    ));
}

私のエンティティの国では、

/**
 * @ORM\Column(type="text")
 */
protected $country;

フォームで編集しているオブジェクトは、ユーザーオブジェクトです。

$enquiry = $this->get('security.context')->getToken()->getUser();

ユーザーエンティティでは、私は持っています

/**
 * @ORM\Column(type="integer")
 */
protected $country;

なぜこのエラーが発生するのかわかりません。

4

1 に答える 1

2

モデルの設計に問題があるようです。ユーザーの「Country」プロパティは、整数ではなく、多対1の関連付けである必要があります(これがフォームビルダーが文句を言う理由です)。

/**
 * @ORM\ManyToOne(targetEntity="Country")
 * @ORM\JoinColumn(name="country_id", referencedColumnName="id")
 **/
private $country;

「property」オプションは、エンティティの選択をユーザーに表示するためにのみ使用されます。Symfony2は、「add」メソッドの最初のパラメーターを使用して、編集するオブジェクトのフィールドを決定します。

于 2012-10-11T12:51:21.923 に答える