Routing 在ZF2控制台应用程序中使用HTTP路由
我正在尝试编写一个控制台操作来为我的应用程序重新生成XML站点地图。ZF2检测到我正在运行PHP的CLI版本,因此正在使用控制台路由,但当Zend Navigation尝试构建站点地图时,由于不知道任何已命名的HTTP路由,ZF2被“未找到名为'xxx'的路由”阻塞。当通过普通HTTP控制器使用时,同样的代码工作得非常好 有没有办法使HTTP路由在控制台应用程序中工作?根据您的请求,“路由器”将是cli或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请求
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渲染器的实例。