我在symfony 3.2应用程序中使用sonata admin和mediabundle。
composer.json
"sonata-project/admin-bundle": "3.x-dev",
"sonata-project/doctrine-orm-admin-bundle": "4.x-dev",
"sonata-project/media-bundle": "4.x-dev",
"sonata-project/intl-bundle": "2.x-dev"
我在doc
中生成了mediabundlesf3 sonata:easy-extends:generate --dest = src SonataMediaBundle
然后在我的实体中,我添加了与媒体实体的关系:
/**
* @ORM\OneToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"})
* @ORM\JoinColumn(name="image_id", referencedColumnName="id", onDelete="SET NULL")
*/
protected $image;
我在doc中配置了奏鸣曲媒体:
sonata_media:
db_driver: doctrine_orm
default_context: default
contexts:
default:
providers:
- sonata.media.provider.image
- sonata.media.provider.file
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70}
filesystem:
local:
directory: "%kernel.root_dir%/../web/uploads/media"
cdn:
server:
path: /uploads/media # http://media.sonata-project.org/
然后将其添加到我的管理员
->add('logo', 'sonata_type_model_list', array('required' => false), array(
'link_parameters' => ['provider'=>'sonata.media.provider.image'],
'label' => 'Logo',
'context' => 'default',
'required' => false,
))
当我尝试添加图片时,我收到此错误:
您已请求不存在的服务"请求"。你的意思是一个吗? 其中:" data_collector.request"," monolog.logger.request", " request_stack"," router.request_context", " sonata.intl.locale_detector.request_stack&#34 ;, " validate_request_listener"
所以我尝试了解它在哪里使用$ this-> container-> get(' request')但我发现在奏鸣曲代码中它使用的内容如下:
if ($this->container->has('request_stack')) {
return $this->container->get('request_stack')->getCurrentRequest();
}
return $this->container->get('request');
这似乎是正确的。 那么为什么我会收到这个错误?
答案 0 :(得分:0)
我把这个答案写给那些不想使用奏鸣曲分类包和奏鸣曲媒体包(像我一样)的人,所以必须使用4.x-dev。 我创建一个commit以使其与symfony3(似乎)兼容。 希望这有帮助。
答案 1 :(得分:-1)
Symfony3不再存在请求服务。
您必须使用request_stack服务