2014-06-24 108 views
0

目前,我创建了一个命令,并试图使用该命令调用控制器中的一个功能。如何使用命令行在控制器中运行功能

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

按照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'); 
} 

但结果说,前进没有定义。

而我的问题是如何解决这个问题,以及如何使用命令行在控制器中运行一个函数。让我知道如果我的步骤是错误的。

回答

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中使用它。

相关问题