Sonata 您请求了一项不存在的服务 "request"
Sonata You have requested a non-existent service "request"
我在 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"
我按照文档中的说明生成媒体包
sf3 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;
我按照文档中的说明配置奏鸣曲媒体:
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,
))
当我尝试添加图像时出现此错误:
You have requested a non-existent service "request". Did you mean one
of these: "data_collector.request", "monolog.logger.request",
"request_stack", "router.request_context",
"sonata.intl.locale_detector.request_stack",
"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');
看来是对的。
那为什么我会收到这个错误?
Symfony3 不再存在请求服务。
您必须改用 request_stack 服务
我把这个答案写给那些不想使用 sonata 分类包和 sonata 媒体包的人(像我一样)所以必须使用 4.x-dev。
我制作了一个 commit 以使其与 symfony3 兼容(似乎)。
希望对您有所帮助。
我在 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"
我按照文档中的说明生成媒体包
sf3 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;
我按照文档中的说明配置奏鸣曲媒体:
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,
))
当我尝试添加图像时出现此错误:
You have requested a non-existent service "request". Did you mean one of these: "data_collector.request", "monolog.logger.request", "request_stack", "router.request_context", "sonata.intl.locale_detector.request_stack", "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');
看来是对的。 那为什么我会收到这个错误?
Symfony3 不再存在请求服务。
您必须改用 request_stack 服务
我把这个答案写给那些不想使用 sonata 分类包和 sonata 媒体包的人(像我一样)所以必须使用 4.x-dev。 我制作了一个 commit 以使其与 symfony3 兼容(似乎)。 希望对您有所帮助。