我正在使用symfony 2.3
我在ACME\TopBundle\Command\CrawlerCommand.php
我在控制台中使用此命令。
$ app/console top:crawler
但现在我想从Controller执行命令。
public function indexAction(){
// I want to execute command
}
我该怎么做?
我正在尝试@Amine建议的解决方案。
我有两个问题。
1)如何检查控制台输出?
我检查了console output class方法。
但是
$output->getStream()
它不会显示控制台日志。
答案 0 :(得分: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
我更喜欢第一种解决方案。