How can I run symfony 2 run command from controller
command, controller, symfony
Solution
See official documentation on this issue for newer versions of Symfony
You don't need services for command execution from controller and, I think, it is better to call command via `run` method and not via console string input, however official docs suggest you to call command via it's alias. Also, see this answer. Tested on Symfony 2.1-2.6.
Your command class must extend `ContainerAwareCommand`
// Your command
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
class MyCommand extends ContainerAwareCommand {
// …
}
// Your controller
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\NullOutput;
class SomeController extends Controller {
// …
public function myAction()
{
$command = new MyCommand();
$command->setContainer($this->container);
$input = new ArrayInput(array('some-param' => 10, '--some-option' => true));
$output = new NullOutput();
$resultCode = $command->run($input, $output);
}
}
In most cases you don't need `BufferedOutput` (from Jbm's answer) and it is enough to check that `$resultCode is 0`, otherwise there was an error.
Problem
I'm wondering how can I run Symfony 2 command from browser query or from controller. Its because I don't have any possibility on hosting to run it and every cron jobs are setted by admin. I don't even have enabled `exec()` function so when I want to test it, I must copy all content from command to some testing controller and this is not best solution.