如何为sonata-admin定义/传递实体管理器

时间:2012-12-10 11:45:32

标签: symfony fosuserbundle symfony-sonata sonata-admin

我跟着this tutorial安装了带有FOSUserBundle的SonataAdmin。

现在我不断收到此错误消息: 没有为Application \ Sonata \ UserBundle \ Entity \ User

类定义实体管理器

但是如何设置/传递EntityManager? 我没有找到任何关于配置它或任何关于此错误意味着什么的提示。 有人帮忙吗?


编辑#1:

正如所要求的那样,到目前为止,这是我在config.yml中为sonata所拥有的内容:

sonata_block:
    default_contexts: [cms]
    blocks:
        sonata.admin.block.admin_list:
            contexts:   [admin]
        sonata.block.service.text:
        sonata.block.service.rss:

编辑#2:

我为Doctrine2 ORM Admin添加了实体管理器配置部分,在文档中提到如果保留为null,则应该使用默认值。不过,它并没有解决我的问题。

sonata_doctrine_orm_admin:
    # default value is null, so doctrine uses the value defined in the configuration
    entity_manager: '@doctrine.orm.entity_manager'

编辑#3: 我确实将auto_mapping设置为true,即使你默认也是如此。 仍然没有解决这个问题的方法。

3 个答案:

答案 0 :(得分:6)

使用时 php app/console sonata:admin:generate 它要求完全限定的模型类,所以你写的东西如下: \Acme\DemoBundle\Entity\DemoEntity

问题是,当生成器为您创建服务时,它会添加行: arguments: [~, \Acme\DemoBundle\Entity\DemoEntity, AcmeDemoBundle:DemoEntityAdmin]

这打破了它。

适用于: arguments: [~, Acme\DemoBundle\Entity\DemoEntity, AcmeDemoBundle:DemoEntityAdmin]

注意在Acme \ Demo ....

之前缺少“\”

答案 1 :(得分:2)

我的config.yml缺少的是:

doctrine:
  [...]
  orm:
    [...]
    entity_managers:
      default:
        mappings:
          ApplicationSonataUserBundle: ~
          SonataUserBundle: ~

答案 2 :(得分:2)

刚出现这个问题。

确保您轻松扩展了SonataUserBundle:

php app/console sonata:easy-extends:generate SonataUserBundle

并将其加载到AppKernel.php

new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),

请参阅此处的文档: https://github.com/sonata-project/SonataUserBundle/blob/master/Resources/doc/reference/installation.rst

然后自动化就足够了,您不需要定义手动映射。