How can I run symfony 2 run command from controller

前端 未结 9 1457
长发绾君心
长发绾君心 2020-11-28 20:03

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

9条回答
  •  感动是毒
    2020-11-28 20:03

    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.

提交回复
热议问题