我正在开发一个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 \ QuizzBundle \ Document \ QuizzTemplate定义文档管理器
任何人都知道如何解决这个问题?谢谢
答案 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}
完成此修复后,一切正常。