【问题标题】:Symfony 2.1 Sonata Admin Bundle OneToManySymfony 2.1 Sonata 管理包 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

【问题讨论】:

    标签: php symfony doctrine symfony-2.1 symfony-sonata


    【解决方案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 表单类型。

    【讨论】:

      猜你喜欢
      • 2016-07-03
      • 2016-03-05
      • 2013-11-25
      • 2021-07-14
      • 2014-04-28
      • 1970-01-01
      • 2018-02-28
      • 2013-03-25
      • 2015-12-17
      相关资源
      最近更新 更多