【问题标题】:Symfony2: call a route inside a commandSymfony2:在命令中调用路由
【发布时间】:2014-03-17 13:16:17
【问题描述】:

我有一个 Command 类,我想从中调用一个路由来执行控制器。

MyClassCommand extends ContainerAwareCommand
{
    protected configure()
    {

    }

    protected execute()
    {

    }
}

我如何从方法execute()中调用一个路由,它只会调用一个Action?

谢谢

【问题讨论】:

  • 你试过$this->getContainer()->get('router')->generate('route_name', array('foo' => 'text'));吗?
  • 它不起作用。未定义的方法::get()。服务不暴露

标签: symfony controller console command routes


【解决方案1】:

捆绑包可以做到这一点:PhaxBundle

将您的控制器声明为服务,然后在命令中简单地调用类似这样的内容:

$ php app/console phax:action yourcontroller youraction -p parametername:value

【讨论】:

  • 那么你可以在这个文件中看到它是如何做到的:github.com/alcalyn/phax-bundle/blob/master/Phax/CoreBundle/…
  • 好的。我听说过那个包(phax),但我认为这一定很简单,可以由 Symfony2 核心处理:)
  • 当然,您也可以通过我在评论中发送的链接来启发您,并简化核心调用
【解决方案2】:

您应该将要执行的代码放入一个额外的类中,使其成为服务,然后从您的控制器和命令中使用它。

然后在你的命令类中你可以这样调用你的服务:

$this->getApplication()->getKernel()->getContainer()->get('service');

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多