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