2013-12-15 35 views
1

我使用symfony的2.3如何從控制器

ACME\TopBundle\Command\CrawlerCommand.php

我用這個命令從控制檯執行控制檯命令我指揮。

$ app/console top:crawler 

但是現在我想要從控制器執行命令。

public function indexAction(){ 

    // I want to execute command 
} 

我該如何做到這一點?

我正在嘗試@Amine建議的解決方案。

我有兩個問題。

1)如何檢查控制檯輸出?

我檢查了console output class方法。

$output->getStream() 

它不顯示控制檯日誌。

回答

3

最好的辦法就是聲明你的命令,服務

MyCommandService: 
class: MyBundle\Command\MyCommand 
calls: 
    - [setContainer, ["@service_container"] ] 

,並在控制器中這樣稱呼它

use Symfony\Component\Console\Input\ArgvInput; 
    use Symfony\Component\Console\Output\ConsoleOutput; 
    . 
    . 
    public function myAction() { 
     $command = $this->get('MyCommandService'); 

     $input = new ArgvInput(array('arg1'=> 'value')); 
     $output = new ConsoleOutput(); 
     $command->run($input, $output); 
    } 

,或者您可以使用此爲例:https://gist.github.com/predakanga/3487705

我喜歡第一個方案

+0

謝謝我正在努力做到這一點..但我有兩個問題,你可以看到你有空嗎?謝謝... – whitebear

+0

謝謝我現在關閉這個問題,如何處理流是另一個quesion.I將做另一個線程。非常感謝你@anime! – whitebear