Forms 在Symfony2文档中,您可以嵌入表单集合以添加对象,但如何从现有对象中选择要添加到集合中?

Forms 在Symfony2文档中,您可以嵌入表单集合以添加对象,但如何从现有对象中选择要添加到集合中?,forms,symfony,datatables,entity,Forms,Symfony,Datatables,Entity,我不确定这是问我问题的最清晰的方式,但基本上我想尝试在Symfony2中实现以下目标: 请务必注意,我已尝试按照文档的要求嵌入集合,但我并不希望创建新对象并添加到集合中,我正在尝试选择要添加到集合中的现有对象 我目前拥有一个产品组实体,该实体仅由ID、名称和产品集合组成: <?php namespace AppBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayColle

我不确定这是问我问题的最清晰的方式,但基本上我想尝试在Symfony2中实现以下目标:

请务必注意,我已尝试按照文档的要求嵌入集合,但我并不希望创建新对象并添加到集合中,我正在尝试选择要添加到集合中的现有对象

我目前拥有一个产品组实体,该实体仅由ID、名称和产品集合组成:

<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * Product Group
 * @ORM\Table(name="productGroups")
 * @ORM\HasLifecycleCallbacks
 */
class ProductGroup
{  
    /**
     * @var integer
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(name="name", type="string", length=255)
     */
    protected $name;

    /**
     * @ORM\ManyToMany(targetEntity="Product", mappedBy="productGroups")
     **/
    protected $products;

    ...
现在我很困惑,我怎么能有一个产品表,其中有一个复选框,一旦选中,保存的表单就会保存在产品组中

有人能提供帮助或建议其他方法吗

我附上了一张图片,上面是我试图实现的目标,如果这有帮助的话

提前感谢。

使用实体表单类型:

Multiple标记将生成一个复选框列表,允许您选择多个ProductGroup

<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * Product
 * @ORM\Table(name="products")
 * @ORM\HasLifecycleCallbacks
 */
class Product
{  
    /**
     * @var integer
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     * @ORM\Column(name="name", type="string", length=255)
     */
    protected $name;

    /**
     * @var string
     * @ORM\Column(name="code", type="string", length=20)
     */
    protected $name;

    /**
     * @ORM\ManyToMany(targetEntity="ProductGroup", mappedBy="products")
     **/
    protected $productGroups;

    ...
<?php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class ProductGroupType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name');
        $builder->add('products', 'collection', array(
            'type' => new ProductType()
        ));
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\ProductGroup',
        ));
    }

    public function getName()
    {
        return 'product_group';
    }
}
class ProductType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name');
        $builder->add('code');
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Product',
        ));
    }

    public function getName()
    {
        return 'product';
    }
}
$builder->add('name', 'text')
        ->add('code', 'text')
        ->add(
            'ProductGroups', 'entity', array(
            'class' => 'YourBundle:ProductGroups',
            'label' => 'Select ProductTypes',
            'placeholder' => 'Select ProductGroups',
            'multiple' => true,
                'expanded' => true
            ))
            ->getForm();
    }