2015-08-20 72 views
0

我有一個控制器作爲一個服務,我想從我的命令調用它控制器與命令Symfony的2

這是我的配置

#service.yml 
parameters: 
     dg_app.controller.glossaries.class: dg\AppBundle\Controller\GlossaryController 

services: 
    dg.glossary.controller: 
     synchronized: true 
     class: "%dg_app.controller.glossaries.class%" 
     calls: 
      - [ setContainer, [ @service_container ]] 

#MyCommand.php 
$request = $this->getContainer()->get('request'); 
$categories = $this->getContainer()->get('dg.glossary.controller')->setGlossaryAction($request); 

#GlossaryController 
/** 
    * @Route("set_glossary/{type}",name="set_glossary_watches") 
    * @Template("xxxBundle:Glossary:glossary.html.twig") 
    */ 
public function setGlossaryAction(Request $request) { 
    ... 
} 

有了這個配置我有這樣的錯誤服務

[Symfony\Component\DependencyInjection\Exception\InactiveScopeException] 
    You cannot create a service ("request") of an inactive scope ("request"). 

如何用不同的參數(類型參數)調用我的控制器?

+0

你不能命令訪問請求,因爲命令沒有關於請求的知識(這是HTTP /瀏覽器專用) –

+0

@TomaszMadeyski謝謝,我可以模擬$要求?像'$ request = $ this-> getContainer() - > get('request'); $ request-> attributes-> set('type','mytype'); $ categories = $ this-> getContainer() - > get('dg.glossary.controller') - > setGlossaryAction($ request);'在我的Command中有這樣的事情?我是否要爲「每個」$類型創建兩條或更多路線? – Barno

+0

有關如何模擬請求的[官方指南](http://symfony.com/doc/current/components/http_foundation/introduction.html#simulating-a-request)。 –

回答

0

添加在你COMMANDE

$this->getContainer()->enterScope('request'); 
$this->getContainer()->set('request', new Request(), 'request'); 
+0

完美!有用。我的最終代碼是: '$ this-> getContainer() - > enterScope('request'); ('request',new Request(),'request'); $ request = $ this-> getContainer() - > get('request'); $ request-> attributes-> set('type','myTpe'); ($ dg.glossary.controller') - > setGlossaryAction($ request);' 你能解釋一點嗎? – Barno

+1

請求是特定於http /瀏覽器的Tomasz Madeyski。我們只是在命令行中創建它。 –

相關問題