2017-10-30 12 views
0

ZF3의 콘솔에서 사이트 맵 생성기를 만들려고합니다. 콘솔 동작이 실행하지만 난 $ this-으로> URL을 URL 를 생성 할 때이 중단됩니다() -> fromRoute은() ... 여기 콘솔 작업에서 경로를 찾을 수 없습니다. zf3

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 사이트 맵 응용 프로그램은이

예외가 발생했습니다! Zend \ Router \ Exception \ RuntimeException "kategorija"라는 이름의 경로를 찾을 수 없음

어떤 통찰력이 있었나요?

답변

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'); 
.....