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

Tim*_*ain 2 routing console-application zend-framework2

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

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

Jur*_*man 9

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

问题是导航构建器的构造非常糟糕.因此,你必须解决这个问题.我假设您在控制器中生成此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);
}
Run Code Online (Sandbox Code Playgroud)