Поле сущности Symfony2 в форме - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь создать простую форму для добавления компаний, и у меня возникают проблемы с использованием сущности.

Я добавил поле выбора, используя сущность типа компании:

->add('idtypesociete', 'entity', array('class' => 'PromocastUtilisateurBundle:PcastTypesociete', 'property' => 'nomtypesociete'))

Но когда я отправляю форму, мое поле idtypesociete содержит объект PcastTypesociete, а не только значение выбранной опции.Таким образом, отправка не удалась.

Я установил отношение «многие к одному» между своей компанией и моей компанией typeCompany, например:

/**
 * @var integer $idtypesociete
 *
 * @ORM\Column(name="IDTYPESOCIETE", type="integer", nullable=false)
 * @ORM\ManyToOne(targetEntity="Promocast\UtilisateurBundle\Entity\PcastTypesociete")
 * @ORM\JoinColumns({
 *  @ORM\JoinColumn(name="PcastTypesociete_idtypesociete", referencedColumnName="idtypesociete")
 * })
 */
private $idtypesociete;

У вас есть решение, чтобы получить только идентификаторвыбранного типа компании?(если возможно без простого запроса sql для перечисления типов моих компаний)

Большое спасибо!

1 Ответ

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

Если отношения работают, то Symfony 2 обычно очень хорошо строит поля формы для вас.

Я думаю, что проблема заключается в свойстве $ idtypesociete.Ожидаете ли вы хранить здесь целое число в гидратированном объекте?

Ассоциации доктрин используют отношения сущностей.Предоставляемые вами аннотации определяют закулисные вещи, такие как столбец соединения: http://docs.doctrine -project.org / projects / doctrine-orm / en / latest / reference / association-mapping.html # many-to-однонаправленный

Я предлагаю сделать резервную копию или зафиксировать вашу работу, прежде чем делать что-либо еще.

Помогает ли изменение свойства объекта на следующее?

/**
 * @var PcastTypesociete $typesociete
 *
 * @ORM\Column(name="IDTYPESOCIETE", type="integer", nullable=false)
 * @ORM\ManyToOne(targetEntity="Promocast\UtilisateurBundle\Entity\PcastTypesociete")
 * @ORM\JoinColumns({
 *  @ORM\JoinColumn(name="PcastTypesociete_idtypesociete", referencedColumnName="idtypesociete")
 * })
 */
private $typesociete;

Вам может потребоваться обновить схему базы данных с помощью doctrine: schema: update с помощью консоли, если она не работает должным образом в первый раз.Ваша сущность также должна быть обновлена, чтобы отразить новое имя свойства.

Если это сработает, тогда вашей форме потребуется только ->add('typesociete') в типе формы, и у вас будет поле выбора работающей сущности, поскольку Symfonyдостаточно умен, чтобы знать, какой тип поля использовать.

...