2016-11-14 6 views
1

Я использую sonata admin и mediabundle в приложении symfony 3.2.Sonata Вы запросили несуществующий сервис «запрос»

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" 

я произвожу mediabundle как сказал в док

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-> получить («просьба»), но я считаю, что в сонатной коде использовать что-то вроде:

if ($this->container->has('request_stack')) { 
      return $this->container->get('request_stack')->getCurrentRequest(); 
     } 


return $this->container->get('request'); 

это кажется правильным , Так почему я получаю эту ошибку?

+0

Использование версий разработки вообще не рекомендуется, почему вы это делаете? – greg0ire

+0

Потому что, когда я создаю проект, symfony 3.2 также находится в dev, и у меня много проблем с зависимостями. – Mattia

+0

Если symfony 3.2 также находится в dev, не используйте его. Версия dev не предназначена для вас, она предназначена для людей, которые хотят внести изменения в bc-break в следующую версию. – greg0ire

ответ

0

Я пишу этот ответ человек, которые не хотят использовать сонатные классификации сверток с сонатой медиа расслоения (как я), так что придется использовать 4.x-DEV. Я делаю commit, чтобы сделать его совместимым с symfony3 (кажется). Надеюсь, что эта помощь.

-1

Служба запроса больше не существует с Symfony3.

Вы должны использовать службу request_stack вместо

+0

Никогда не советуйте версии 'dev-master', они предназначены для разработки. – greg0ire

+0

Вы не говорите? –

+0

Если вы прочитали мой вопрос, вы можете увидеть: if ($ this-> container-> has ('request_stack')) { return $ this-> container-> get ('request_stack') -> getCurrentRequest(); } возвращение $ this-> container-> get ('request'); – Mattia