参考一个 Sonata Mongodb 管理包

问题描述 投票:0回答:2

我正在开发一个symfony2网络应用程序,我已经安装了sonata Mongodb admin Bundle。但是我有一个小问题,我的数据模型是'Quizz'文档,它引用了'QuizzTemplate'文档(参考One)。这是我的代码:

protected function configureListFields(ListMapper $listMapper)
 {
    $listMapper
    ->addIdentifier('uid')
    ->add('name')
    ->add('quizzTemplate', null, array("required" => false )
    ->add ('User', null, array('label' => 'Candidat','required' => false, 'by_reference' => true))
    ->add('_action', 'actions', array(
        'actions' => array(
            'view' => array(),
            'edit' => array(),
            )
        ))
    ;
}

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
    ->add('uid')
    ->add('name')  
    ->add('quizzTemplate', null, array());



}

protected function configureShowFields(ShowMapper $showMapper)
{

    $showMapper
        ->add('name')
        ->add('User')
        ->add('numericresult',null ,array('label' => 'Resultat Global'))

    ;

}


protected function configureDatagridFilters(DatagridMapper $datagrid)
{
    $datagrid
    ->add('uid')
    ->add('name') 

    ;
}

事实上,它适用于列表映射器,但配置和显示则不是这样,这就是错误:

错误:调用非对象上的成员函数 getRepository()

我试过这样:

->add('quizzTemplate.id')

我得到了这个:

没有为类 \ATS\QuizzBundle\Document\QuizzTemplate 定义文档管理器

有人知道如何解决这个问题吗?谢谢你

mongodb symfony sonata-admin
2个回答
0
投票

我刚刚在 Sonata Mongodb 上遇到了同样的问题。我正在使用多个连接和文档管理器。

这是我的第一个错误,我使用命令

app/console sonata:admin:generate
为现有文档创建了一个管理员,当提示
The fully qualified model class
时,我写了
\Project\MyBundle\Document\MyDocument
。其余过程进展顺利,但最后,当生成器尝试生成
MyDocumentAdmin
类时,我得到了与您相同的错误:

没有为类 \Project\MyBundle\Document\MyDocument

定义文档管理器

我花了一些时间才弄清楚出了什么问题......我手动创建了管理类,并在尝试显示列表时遇到了相同的错误。

事实上,这个错误是由于命名空间中的拼写错误造成的,您需要在生成的服务奏鸣曲的参数中删除类命名空间中的第一个字符

\

语法错误:

参数:[~, \MyProject\MyBundle\Document\MyDocument, SonataAdminBundle:CRUD]

良好的语法:

参数:[~,MyProject\MyBundle\Document\MyDocument,SonataAdminBundle:CRUD]

完整工作服务定义:

my_project.admin.my_document:
        class: MyProject\MyBundle\Admin\MyDocumentAdmin
        arguments: [~, MyProject\MyBundle\Document\MyDocument, SonataAdminBundle:CRUD]
        tags:
            - {name: sonata.admin, manager_type: doctrine_mongodb, group: admin, label: MyDocument}

修复后,一切恢复正常。


0
投票

可以通过在doctrine_mongodb.yaml 文件的 document_managers 定义中添加 SonataAdminBundle 来解决此问题。这是我的例子

doctrine_mongodb:
   auto_generate_proxy_classes: true
   auto_generate_hydrator_classes: true
   connections:
     default:
        server: '%env(resolve:MONGODB_URL)%'
        options: {}
     default_database: '%env(resolve:MONGODB_DB)%'
     document_managers:
        default:
           auto_mapping: true
           mappings:
              App:
                 is_bundle: false
                 dir: '%kernel.project_dir%/src/Document'
                 prefix: 'App\Document'
                 alias: App
              SonataAdminBundle:
© www.soinside.com 2019 - 2024. All rights reserved.