3

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

我的命令.php

命名空间 xxx\WebBundle\Command;

使用 Symfony\Component\Console\Command\Command;使用 Symfony\Component\Console\Input\InputArgument;使用 Symfony\Component\Console\Input\InputInterface;使用 Symfony\Component\Console\Input\InputOption;使用 Symfony\Component\Console\Output\OutputInterface;

类 GreetCommand 扩展命令 { 受保护的功能配置() {

}

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()”如何在执行函数中获取文档管理器?

4

1 回答 1

6

You need to extends ContainerAwareCommand to have access to $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);
  } 
}
于 2013-09-02T10:24:42.330 回答