Автоматически построить форму, используя сущность (отношение один к одному) - PullRequest
9 голосов
/ 01 марта 2012

Мне интересно, возможно ли построить форму, используя сущность, чтобы получить все поля в отношениях один-к-одному.Чтобы уточнить:

У меня есть сущность User.php (со всеми очевидными полями, именем, фамилией, жанром и т. Д.) И сущность Address.php.Я хочу построить всю форму, не добавляя одно за другим свойства объекта Address, и сохранить ее с правильными отношениями в базе данных.

Это то, что я пробовал (я обрезал коднемного), но, очевидно, это не правильный путь:

Сущность пользователя:

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 таблицы и помещает его в список.

1 Ответ

1 голос
/ 01 марта 2012

Попробуйте использовать Тип формы коллекции вместо типа поля Entity - см. это руководство .

...