参考一个Sonata Mongodb Admin Bundle

时间:2015-05-08 15:58:16

标签: mongodb symfony sonata-admin

我正在开发一个symfony2 web-app,我已经安装了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()

我试过这种方式:

  

- >添加( 'quizzTemplate.id')

我得到了这个:

  

没有为类\ ATS \ QuizzBu​​ndle \ Document \ QuizzTemplate定义文档管理器

任何人都知道如何解决这个问题?谢谢

1 个答案:

答案 0 :(得分: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}

完成此修复后,一切正常。