Symfony Sonata 媒体包
Posted
技术标签:
【中文标题】Symfony Sonata 媒体包【英文标题】:Symfony Sonata Media Bundle 【发布时间】:2015-12-17 15:54:39 【问题描述】:情况
我正在使用 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;
公司管理员.php
->add('logo', 'sonata_type_model_list', array(), array('link_parameters' => array('context' => 'default')))
问题
现在,每当我进入公司管理界面时,都会看到消息“没有为类 Doctrine\ODM\MongoDB\PersistentCollection 定义文档管理器”
我对 Symfony 比较陌生,我真的不知道出了什么问题。请你能帮助在正确的方向戳一下。如果我从管理员中删除徽标,它自然会重新开始工作。请帮忙,这里真的一无所知
【问题讨论】:
【参考方案1】:如果您使用:auto_mapping: true,则不需要文档管理器默认映射,否则您必须在配置文件中添加:
orm:
# auto_mapping: true
entity_managers:
default:
connection: default
# naming_strategy: doctrine.orm.naming_strategy.underscore
mappings:
ApplicationSonataUserBundle: ~
ApplicationSonataMediaBundle: ~
YourBundle: ~
在 AppKernel.php 中检查 ApplicationSonataMediaBundle() 实例运行命令:
运行应用程序/控制台原则:schema:update --force
也看看这个问题:
How to define/pass the entity manager for sonata-admin
【讨论】:
以上是关于Symfony Sonata 媒体包的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 Sonata Media Bundle -- 上传图片时出错
Symfony2 覆盖 Sonata 媒体图像提供程序。(将接口传递给构造函数)
Symfony Sonata Media Bundle 向用户添加图像/视频