2012-03-14 3 views
0

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

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

->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

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

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

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

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

Изменяет ли свойство объекта следующую справку?

/** 
* @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; 

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

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

+0

Извините, что опоздал, но да, наконец, мне удалось это сделать! Большое спасибо за вашу помощь ! – Snroki

Смежные вопросы