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

Routing 在ZF2控制台应用程序中使用HTTP路由,routing,zend-framework2,console-application,Routing,Zend Framework2,Console Application,我正在尝试编写一个控制台操作来为我的应用程序重新生成XML站点地图。ZF2检测到我正在运行PHP的CLI版本,因此正在使用控制台路由,但当Zend Navigation尝试构建站点地图时,由于不知道任何已命名的HTTP路由,ZF2被“未找到名为'xxx'的路由”阻塞。当通过普通HTTP控制器使用时,同样的代码工作得非常好 有没有办法使HTTP路由在控制台应用程序中工作?根据您的请求,“路由器”将是cli或HTTP路由器。但是,如果在服务管理器中加载HttpRouter,则可以显式获得http请求

我正在尝试编写一个控制台操作来为我的应用程序重新生成XML站点地图。ZF2检测到我正在运行PHP的CLI版本,因此正在使用控制台路由,但当Zend Navigation尝试构建站点地图时,由于不知道任何已命名的HTTP路由,ZF2被“未找到名为'xxx'的路由”阻塞。当通过普通HTTP控制器使用时,同样的代码工作得非常好

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

根据您的请求,“路由器”将是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);
}

谢谢,这个有用。但是,我现在遇到了一些问题,因为Sitemap视图帮助程序假定视图将是phpRenderer实例。我知道我可以使用
->setView()
-将视图传递给助手,那么如何创建/获取新的phpRenderer实例来提供呢?好的,回答我自己的问题,只需创建
Zend\view\Renderer\phpRenderer
的新实例并提供解决错误的方法,不过可能还有更好的方法。您可以通过服务管理器在键
ViewRenderer
处获取php渲染器的实例。