目前,我创建了一个命令,我正在尝试使用该命令调用控制器中的一个函数。
所以我认为第一步是将控制器作为命令行可以调用的服务。
根据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');
}
但结果表明前锋没有定义。
我的问题是如何解决这个问题,以及如何使用命令行在控制器中运行一个函数。如果我的步骤错了,请告诉我。
答案 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中使用它。