【问题标题】:Using HTTP routes within ZF2 console application在 ZF2 控制台应用程序中使用 HTTP 路由
【发布时间】:2013-06-13 12:19:38
【问题描述】:

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

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

【问题讨论】:

    标签: routing zend-framework2 console-application


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这行得通。但是我现在遇到了一些问题,因为站点地图视图助手假定视图将是一个 phpRenderer 实例。我看到我可以使用 ->setView() 将视图传递给助手 - 那么我将如何创建/获取新的 phpRenderer 实例来提供?
    • 好的,回答我自己的问题,只需创建一个 Zend\View\Renderer\PhpRenderer 的新实例并提供解决错误的方法,不过可能有更好的方法。
    • 您可以通过服务管理器在键ViewRenderer获取一个php渲染器的实例。
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多