2

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

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

4

1 回答 1

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);
}
于 2013-06-14T09:27:03.013 回答