在ZF2控制台应用程序中使用HTTP路由

时间:2013-06-13 12:19:38

标签: routing zend-framework2 console-application

我正在尝试编写一个控制台操作来为我的应用程序重新生成XML站点地图。 ZF2检测到我正在运行PHP的CLI版本,因此正在使用控制台路由,但是当Zend Navigation尝试构建站点地图时,它会以“找不到名称'xxx'的路由”来阻塞,因为它没有了解任何已命名的HTTP路由。通过普通的HTTP控制器使用时,相同的代码可以正常工作。

有没有办法让HTTP路由在控制台应用程序中运行?

1 个答案:

答案 0 :(得分:9)

根据您的请求,“路由器”将是cli或http路由器。但是,如果在服务管理器中加载HttpRouter,则会明确显示路由器的http请求。然后你必须确保在导航中注入此路由器,而不是默认值(因此,cli)。

问题是导航构建器是very badly constructed。因此,你必须解决这个问题。我假设您在控制器中生成此XML:

public function generateAction()
{
    $event  = $this->getEvent();
    $http   = $this->getServiceLocator()->get('HttpRouter);
    $router = $event->getRouter();

    $event->setRouter($http);

    // Get your navigation here
    // Build your XML here

    $event->setRouter($router);
}