类型实体symfony2.1的集合

时间:2013-02-26 19:35:14

标签: forms symfony collections

我的问题:我想知道是否可以在表单构建器中嵌入类型实体的集合。

我有两个实体:一个Partitions实体,它有很多Genrepartition个实体

/**
 * Partitions
 *
 * @ORM\Table(name="partitions")
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 */
class Partitions
{
// ...

/**
 * @var \Genrepartition
 *
 * @ORM\OneToMany(targetEntity="Genrepartition", mappedBy="idGenre")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="idGenre", referencedColumnName="idGenre")
 * })
 */
private $idgenre;

// ...

/**
 * Set idgenre
 *
 * @param \Acme\PartBundle\Entity\Genrepartition $idgenre
 * @return Partitions
 */
public function setIdgenre(\Acme\PartBundle\Entity\Genrepartition $idgenre = null)
{
    $this->idgenre = $idgenre;

    return $this;
}

/**
 * Get idgenre
 *
 * @return \Acme\PartBundle\Entity\Genrepartition
 */
public function getIdgenre()
{
    return $this->idgenre;
}

/**
 * Constructor
 */
public function __construct()
{
    $this->idgenre = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
 * Add idgenre
 *
 * @param \Acme\PartBundle\Entity\Genrepartition $idgenre
 * @return Partitions
 */
public function addIdgenre(\Acme\PartBundle\Entity\Genrepartition $idgenre)
{
    $this->idgenre[] = $idgenre;

    return $this;
}

/**
 * Remove idgenre
 *
 * @param \Acme\PartBundle\Entity\Genrepartition $idgenre
 */
public function removeIdgenre(\Acme\PartBundle\Entity\Genrepartition $idgenre)
{
    $this->idgenre->removeElement($idgenre);
}

PartitionsType上,我尝试了两种嵌入集合的方法,首先是“文档样式”:

 ->add('idgenre', "collection", array("type" => new GenrepartitionType()))

第二个代码:

 ->add("idgenre", "entity", array(
      "class" => "AcmePartBundle:Genrepartition",
      "property" => "libellegenre",
      "query_builder" => function(\Doctrine\ORM\EntityRepository $er) {
                              return $er->createQueryBuilder("u");
                         }

但问题是我需要有一个集合的集合。

我想知道是否可以这样嵌入:

->add("idgenre", "collection", array("class" => "entity" ...

目前,我在buildFormController中使用第二种方法,我自己添加了收藏集,我试图用树枝渲染但没有成功。

这是我的控制器:

    $Partition = new \Acme\PartBundle\Entity\Partitions();

    //...
    $em = $this->getDoctrine()
         ->getRepository("AcmePartBundle:Genrepartition")->findAll();
    foreach($em as $value) $Ajouter->getIdpartition()->addIdgenre($value);
    // ...

这是枝条文件:

    <select id=".." name="..">
         {% for elem in formPart.idpartition.idgenre %}
              <option value="{{ elem.vars.value.idgenre }}">{{ elem.vars.value.libellegenre }}</option>
         {% endfor %}
    </select>

0 个答案:

没有答案