5

假设我有两个实体:

一、产品

/**
 * @ORM\Table()
 * @ORM\Entity
 */
class Product
{
    /*   
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

    /**
     * @ORM\OneToMany(targetEntity="Catalog", mappedBy="product")
     */
    public $catalogs;

    public function __construct()
    {
        $this->catalogs = new \Doctrine\Common\Collections\ArrayCollection();
    }
}

2.目录

/**
 *
 * @ORM\Table()
 * @ORM\Entity
 */
class Catalog
{
    /**
     * @ORM\ManyToOne(targetEntity="Product", inversedBy="catalogs") 
     */
    private $product;

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

我的ProductAdmin

class ProductAdmin extends Admin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
        ->add('name')
        ->add('catalogs', 'sonata_type_model')
        ;
    }
}

我无法开始catalogs工作(类似于 user=>groups 关联:http: //demo.sonata-project.org/admin/sonata/user/user/create credentials: admin/admin)。我只得到错误:No entity manager defined for class Doctrine\Common\Collections\ArrayCollection

4

2 回答 2

10

尝试多个选项:

 protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
        ->add('name')
        ->add('catalogs', 'sonata_type_model', array('multiple' => true)
        ;
    }
于 2013-02-28T08:10:01.217 回答
0

您必须为目录实体添加一个单独的管理类。

如果您拥有与 ProductAdmin 相同的 CatalogAdmin,则只能使用 Catalog。之后,您可以使用 sonata_type_model 或 sonata_type_model_list 表单类型。

于 2013-08-02T20:43:15.850 回答