无法在控制台操作zf3中找到路由

时间:2017-10-30 14:50:22

标签: zend-framework3 php-7.1 zend-controller

我试图在ZF3中从控制台制作站点地图生成器。 控制台操作被执行但是当我尝试生成url时它会中断 使用$ this-> url() - > fromRoute()...

这是控制器动作

  public function sitemapAction() {

    $loc = $this->model->dobijGeneralnuPostavku('sitemap_web');
    $xml_data = new \SimpleXMLElement('<?xml version="1.0"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"></urlset>');

    $staticke = $this->model->sitemapStaticke();
    foreach ($staticke as $stat) {
        $a = ['url' => [
                'loc' => $loc . $stat,
            ]
        ];
        $this->array_to_xml($a, $xml_data);
    }

    $kategorije = $this->model->sitemapKategorije();
    foreach ($kategorije as $pod) {
        $a = ['url' => [
                'loc' => $loc . $this->url()->fromRoute('kategorija', ['idkat' => $pod['id'], 'ime' => $pod['ime'], 'page' => 1]),
            // 'lastmod'=> date('Y-m-d', strtotime(date("Y-m-d").'- 2 days' )) ,
            ]
         ];
        $this->array_to_xml($a, $xml_data);
    }

    $artikli = $this->model->sitemapArtikli();
    foreach ($artikli as $artikl) {
        $a = ['url' => [
                'loc' => $loc . $this->url()->fromRoute('artikl', ['id' => $artikl['id'], 'ime' => preg_replace(['/[^a-zA-Z0-9 -]/', '/[ -]+/', '/^-|-$/'], ['', '-', ''], $artikl['ime'])]),
            ]
        ];
        $this->array_to_xml($a, $xml_data);
    }
    //unlink('/var/www/name.xml');
    $result = $xml_data->asXML(__DIR__ . '../../../public/sitemap.xml');
}

这里是路线

'kategorija' => [
            'type' => Segment::class,
            'options' => [
                'route' => '/kategorija/:idkat/:ime[/stranica/:page]',
                'defaults' => [
                    'controller' => Controller\IndexController::class,
                    'action' => 'kategorija',
                ],
            ],
        ],
        'artikl' => [
            'type' => Segment::class,
            'options' => [
                'route' => '/artikl/:id/:ime',
                'defaults' => [
                    'controller' => Controller\IndexController::class,
                    'action' => 'artikl',
                ],
            ],
        ],

我得到例外:  php /var/www/pcwebshop/public/index.php sitemap

该应用程序抛出异常!  Zend的\路由器\异常\的RuntimeException  路线名称&#34; kategorija&#34;找不到

有什么可以解决的问题?

1 个答案:

答案 0 :(得分:0)

问题是执行控制台操作时路由器没有可用的http路由。这不是最佳实践解决方案,因为不推荐使用getServiceLocator但它现在可以正常工作。

  public function sitemapAction() {

    $event = $this->getEvent();
    $http = $this->plugins->getServiceLocator()->get('HttpRouter');
    $router = $event->getRouter();
    $event->setRouter($http);

    $loc = $this->model->dobijGeneralnuPostavku('sitemap_web');
.....