10

1 対 1 の関係で、エンティティを使用してすべてのフィールドを取得するフォームを作成できるかどうか疑問に思っています。明確にするために:

エンティティ (すべてUser.phpの明白なフィールド、名前、姓、ジャンルなど) とAddress.phpエンティティがあります。私が望むのは、Addressエンティティのプロパティを1つずつ追加せずにフォーム全体を構築し、データベースに適切な関係で保存することです.

これは私が試したものです(コードを少しトリミングしました)が、明らかに正しい方法ではありません:

ユーザー エンティティ:

class User implements UserInterface {

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;


/**
 * @ORM\Column(type="string", length=100, nullable=TRUE)
 */
protected $firstName;

/**
 * @ORM\Column(type="string", length=200)
 * @Assert\NotBlank()
 */
protected $lastNames;

/**
 * @ORM\OneToOne(targetEntity="Capsa\Bundle\ClubCommonBundle\Entity\Address")
 */
protected $address;

住所クラス

class Address {

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\Column(type="string", length=100, unique=TRUE)
 * @Assert\NotBlank()
 */
protected $streetName;

/**
 * @ORM\Column(type="string", length=50)
 */
protected $streetNumber;

フォームビルダー:

public function buildForm(FormBuilder $builder, array $options) {
    $builder->add('login', 'text')
            ->add('password', 'password')
            ->add('firstName', 'text', array("required" => FALSE))
            ->add('lastNames', 'text')
            ->add('address', 'entity', array(
                'class' => 'CapsaClubCommonBundle:Address',
                'property'=>'streetName'
            ));
}

これは、テーブルのフィールド streetName のみを取得し、リストに入れます。

4

1 に答える 1

2

エンティティ フィールド タイプの代わりにコレクション フォーム タイプを使用してみてください。このチュートリアルを参照してください。

于 2012-03-01T19:06:56.117 に答える