如何使用命令行在控制器中运行函数

时间:2014-06-24 04:20:50

标签: php symfony

目前,我创建了一个命令,我正在尝试使用该命令调用控制器中的一个函数。

所以我认为第一步是将控制器作为命令行可以调用的服务。

根据Symfony2在线书籍:在services.yml:

parameters:
   property.controller.core.class: Ladoo\Brolly\CoreBundle\Controller\PropertyController

services: 
  property.core.controller:
        class: '%property.controller.core.class'

在命令php文件中:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $this->forward('property.core.controller:updatePropertyAction');
}

但结果表明前锋没有定义。

我的问题是如何解决这个问题,以及如何使用命令行在控制器中运行一个函数。如果我的步骤错了,请告诉我。

1 个答案:

答案 0 :(得分:2)

如果控制器中有 updatePropertyAction 方法,您应该能够:

$this->getContainer()->get('property.core.controller')->updatePropertyAction("arguments");

要访问容器表单命令,您应该将其设为ContainerAware:

class GreetCommand extends ContainerAwareCommand // see: http://symfony.com/doc/current/cookbook/console/console_command.html

就个人而言,我不会在命令中使用控制器(一种不好的做法)。我会考虑写一个经理服务。它可以完全满足您的需求,并在Controller和Command中使用它。