2

プロパティとしてエンティティにないフィールドを持つフォームタイプがありますが、エンティティにはフォームフィールドと同じ名前のゲッターとセッターがあり、次のように説明しています。

フォームタイプ:

$builder->add('theField', 'entity', array(
    'label' => 'The field',
    'class' => 'MyAppBundle:AnEntity',
    'empty_value' => '',
));

実在物:

class User
{
    //There is NOT a property called "theField"

    public function setTheField($value)
    {
        ...
    }

    public function getTheField()
    {
        ...
    }
}

したがって、Symfony2 は getter と setter を呼び出してバインドし、フォーム フィールドを表示すると予想されますが、次のエラーが発生します。

Property theField does not exists in class My\AppBundle\Entity\User

エンティティでプロパティを宣言せずにこのフォーム フィールドを作成する方法はありますか?

編集

奇妙ですが、プライベートプロパティを宣言すると、theFieldうまくいきます(ところで、それは私が探しているものではありません)。

4

2 に答える 2

1

試しましたか:

$builder->add('theField', 'entity', array(
    'label' => 'The field',
    'class' => 'MyAppBundle:AnEntity',
    'empty_value' => '',
    'property_path' => false,
));

アップデート

フィールド名をエンティティの属性と同じに変更'property_path'するか、属性名に変更します。

$builder->add('theField', 'entity', array(
    'label' => 'The field',
    'class' => 'MyAppBundle:AnEntity',
    'empty_value' => '',
    'property_path' => 'theField',
));

そして、エンティティに次を追加します。

private $theField = null;
于 2012-09-20T19:31:43.803 に答える