控制台命令中symfony2中的文档管理器

时间:2013-09-02 06:25:37

标签: symfony-2.1

我的symfony网站需要一个cron作业。我找到了创建控制台命令的教程 http://symfony.com/doc/2.1/cookbook/console/console_command.html

我的命令.php

  

命名空间xxx \ WebBundle \ Command;

     

使用Symfony \ Component \ Console \ Command \ Command;使用   Symfony的\分量\控制台\输入\ InputArgument;使用   Symfony的\分量\控制台\输入\ InputInterface;使用   Symfony的\分量\控制台\输入\ InputOption;使用   的Symfony \组件\控制台\输出\ OutputInterface;

     

类GreetCommand extends Command {       受保护的函数configure()       {

}

protected function execute(InputInterface $input, OutputInterface $output)
{

    $em = $this->getContainer()->get('doctrine')->getManager();
    $em->getRepository('xxxWebBundle:Wishlist')->findAll();
   // $output->writeln($text);
} 
     

}

当我在控制台中调用命令时,收到错误“调用未定义的方法xxxx \ WebBundle \ Command \ MyCommand :: getContainer()” 如何在执行功能中获取文档管理器?

1 个答案:

答案 0 :(得分:6)

您需要扩展ContainerAwareCommand才能访问$this->getContainer()

namespace xxx\WebBundle\Command;

//Don't forget the use
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;

class GreetCommand extends ContainerAwareCommand { 
  protected function configure() {}

  protected function execute(InputInterface $input, OutputInterface $output)
  {

    $em = $this->getContainer()->get('doctrine')->getManager();
    $em->getRepository('xxxWebBundle:Wishlist')->findAll();
    // $output->writeln($text);
  } 
}