Forms 在Symfony2文档中,您可以嵌入表单集合以添加对象,但如何从现有对象中选择要添加到集合中?
我不确定这是问我问题的最清晰的方式,但基本上我想尝试在Symfony2中实现以下目标: 请务必注意,我已尝试按照文档的要求嵌入集合,但我并不希望创建新对象并添加到集合中,我正在尝试选择要添加到集合中的现有对象 我目前拥有一个产品组实体,该实体仅由ID、名称和产品集合组成: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
<?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();
}