引用一个Sonata Mongodb Admin Bundle



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

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上遇到了同样的问题。我正在使用多个连接和文档管理器。

这是我的第一个错误,我使用命令app/console sonata:admin:generate为现有文档创建了一个管理员,当提示输入The fully qualified model class时,我写了ProjectMyBundleDocumentMyDocument.其余的过程进展顺利,但是在最后,当生成器尝试生成类MyDocumentAdmin我遇到了与您相同的错误:

没有为类 \Project\MyBundle\Document\MyDocument 定义文档管理器

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

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

语法错误:

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

良好的语法:

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

完整的工作服务定义:

my_project.admin.my_document:
class: MyProjectMyBundleAdminMyDocumentAdmin
arguments: [~, MyProjectMyBundleDocumentMyDocument, SonataAdminBundle:CRUD]
tags:
- {name: sonata.admin, manager_type: doctrine_mongodb, group: admin, label: MyDocument}

修复后,一切再次正常。

这可以通过在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: 'AppDocument'
alias: App
SonataAdminBundle:

最新更新