2014-06-24 79 views
0

目前,我創建了一個命令,並試圖使用該命令調用控制器中的一個功能。如何使用命令行在控制器中運行功能

所以我認爲第一步是將控制器作爲命令行可以調用的服務。

按照Symfony2的在線圖書:在services.yml:

parameters: 
    property.controller.core.class: Ladoo\Brolly\CoreBundle\Controller\PropertyController 

services: 
    property.core.controller: 
     class: '%property.controller.core.class' 

,並在命令php文件:

protected function execute(InputInterface $input, OutputInterface $output) 
{ 
    $this->forward('property.core.controller:updatePropertyAction'); 
} 

但結果說,前進沒有定義。

而我的問題是如何解決這個問題,以及如何使用命令行在控制器中運行一個函數。讓我知道如果我的步驟是錯誤的。

回答

2

如果你有一個控制器中的updatePropertyAction方法,你應該能夠:

$this->getContainer()->get('property.core.controller')->updatePropertyAction("arguments"); 

要訪問容器窗體命令你應該讓ContainerAware:

class GreetCommand extends ContainerAwareCommand // see: http://symfony.com/doc/current/cookbook/console/console_command.html 

就個人而言,我不會在命令中使用控制器(一種不好的做法)。我會考慮編寫一個管理器服務。它將完全按照您的需要在Controller和Command中使用它。

相關問題