Symfony 2.1 Sonata 管理包 OneToMany
Posted
技术标签:
【中文标题】Symfony 2.1 Sonata 管理包 OneToMany【英文标题】:Symfony 2.1 Sonata Admin Bundle OneToMany 【发布时间】:2012-09-24 08:42:11 【问题描述】:假设我有两个实体:
1.产品
/**
* @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
正常工作(此处类似于用户=> 组关联:http://demo.sonata-project.org/admin/sonata/user/user/create 凭据:管理员/管理员)。
我只得到错误:No entity manager defined for class Doctrine\Common\Collections\ArrayCollection
【问题讨论】:
【参考方案1】:尝试多个选项:
protected function configureFormFields(FormMapper $formMapper)
$formMapper
->add('name')
->add('catalogs', 'sonata_type_model', array('multiple' => true)
;
【讨论】:
非常感谢!【参考方案2】:您必须为目录实体添加一个单独的管理类。
只有拥有与 ProductAdmin 相同的 CatalogAdmin 时,才能使用 Catalog。 之后,您可以使用 sonata_type_model 或 sonata_type_model_list 表单类型。
【讨论】:
以上是关于Symfony 2.1 Sonata 管理包 OneToMany的主要内容,如果未能解决你的问题,请参考以下文章
在 symfony sonata 管理包的不同子菜单中拆分域
Symfony 2 Sonata 媒体包:在没有奏鸣曲管理员的情况下保存媒体文件图像