0
以下數據的情況是:實體字段類型的symfony 2.0 - 顯示從數據庫中編輯行動
我有3個表(一到多): 產品,ProductLabel,LabelTag(標籤保留-_- )
正如您可能已經猜到的,產品可以有很多標籤。
現在我有一個表單產品,顯示可用的標籤。對於我的新建和創建操作,我已經能夠顯示並保存所選的標籤。 當我嘗試在數據庫的編輯動作中顯示標籤+顯示選定的標籤時,出現問題。
一些代碼:
實體產品:
/**
* @var Doctrine\Common\Collections\ArrayCollection $productLabels
*
* @ORM\OneToMany(targetEntity="Labeyrie\Bundle\MainsiteBundle\Entity\ProductLabel", mappedBy="product")
*/
protected $productLabels;
實體LabelTag:
/**
* @var Doctrine\Common\Collections\ArrayCollection $productLabels
*
* @ORM\OneToMany(targetEntity="Labeyrie\Bundle\MainsiteBundle\Entity\ProductLabel", mappedBy="labelTag")
*/
protected $productLabels;
實體ProductLabel:
/**
* @var Labeyrie\Bundle\MainsiteBundle\Entity\Product $product
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Labeyrie\Bundle\MainsiteBundle\Entity\Product", inversedBy="productLabels")
*/
protected $product;
/**
* @var Labeyrie\Bundle\MainsiteBundle\Entity\LabelTag $labelTag
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Labeyrie\Bundle\MainsiteBundle\Entity\LabelTag", inversedBy="productLabels")
*/
protected $labelTag;
產品形態:
->add('productLabels', 'entity', array(
'class' => 'LabeyrieMainsiteBundle:LabelTag',
'property' => 'title',
'multiple' => true,
'expanded' => true,
))
這是我如何保存它創建行動:
if ($form->isValid()) {
/* save product */
$em->persist($product);
$em->flush();
/* save product labels */
$labels = $product->getProductLabels();
if (!empty($labels)) {
foreach ($labels as $label) {
$productLabel = new ProductLabel();
$productLabel->setLabelTag($label);
$productLabel->setProduct($product);
$em->persist($productLabel);
}
}
$em->flush();
}
沒有異議。
問題是我編輯操作:
$entity = $em->getRepository('MyProjectBundle:Product')->find($id));
$form = $this->createForm(new ProductType(), $entity);
如果我只是呈現形式,我只能看到標籤,那裏面的人已經選擇不發送信息(因爲它是在我管理的中間表),因此沒有顯示。
我需要一個使用我的一對多架構的解決方案。表單配置是否錯誤?請幫忙。 :)