Situation
我正在使用Symfony(和MongoDB作为数据库),并希望将Sonata Media Bundle集成到Sonata Admin捆绑包中 . 在添加媒体包之前,一切都很顺利 .
我按照Sonata网站上的指南进行操作,似乎正确设置了媒体管理包;请参阅下面的配置
config.yml
doctrine_mongodb:
connections:
default:
server: mongodb://localhost:27017
options: {}
default_database: test_database
document_managers:
default:
mappings:
ApplicationSonataMediaBundle: ~
SonataMediaBundle: ~
auto_mapping: true
...
sonata_media:
# if you don't use default namespace configuration
#class:
# media: MyVendor\MediaBundle\Entity\Media
# gallery: MyVendor\MediaBundle\Entity\Gallery
# gallery_has_media: MyVendor\MediaBundle\Entity\GalleryHasMedia
default_context: default
db_driver: doctrine_mongodb # or doctrine_mongodb, doctrine_phpcr
contexts:
default: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
Company.php文档类
namespace AppBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document
*/
class Company
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\String
*/
protected $title;
/**
* @MongoDB\String
*/
protected $slug;
/**
* @MongoDB\ReferenceMany(targetDocument="Application\Sonata\MediaBundle\Document\Media", mappedBy="image")
*/
protected $logo;
companyadmin.php
->add('logo', 'sonata_type_model_list', array(), array('link_parameters' => array('context' => 'default')))
Issue
现在,每当我进入公司管理界面时,我都会收到消息“没有为类Doctrine \ ODM \ MongoDB \ PersistentCollection定义的文档管理器”
我对Symfony比较陌生,我真的不知道出了什么问题 . 请你帮忙捅一个正确的方向 . 如果我从管理员中删除徽标,它自然会重新开始工作 . 请帮忙,这里真的很无能为力
1 回答
如果使用: auto_mapping: true ,则不需要文档管理器默认映射,否则必须添加配置文件:
在AppSernel.php中检查ApplicationSonataMediaBundle()实例运行命令:
运行app / console doctrine:schema:update --force
看看这个问题:
How to define/pass the entity manager for sonata-admin