2013-06-13 4 views
2

Я пытаюсь написать действие консоли для восстановления XML-карты сайта для моего приложения. ZF2 обнаруживает, что я запускаю версию CLI для PHP и, таким образом, использую консольную маршрутизацию, но затем задыхается «Маршрут с именем« xxx »не найден», когда Zend Navigation пытается построить карту сайта, потому что она не знать о любом из названных маршрутов HTTP. Тот же код отлично работает при использовании через обычный HTTP-контроллер.Использование маршрутов HTTP в консольном приложении ZF2

Есть ли способ, чтобы маршруты HTTP работали в консольном приложении?

ответ

9

«Роутер» будет клиентом или 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); 
} 
+0

Спасибо, это работает. Однако у меня возникают некоторые проблемы, потому что помощник представления Sitemap предполагает, что представление будет экземпляром phpRenderer. Я вижу, что могу передать представление помощнику с помощью '-> setView()' - так как я могу создать/получить новый экземпляр phpRenderer для поставки? –

+0

Хорошо, отвечая на мой собственный вопрос, просто создавая новый экземпляр «Zend \ View \ Renderer \ PhpRenderer» и поставляя, что решает ошибки, возможно, лучший способ. –

+0

Вы можете получить экземпляр рендерера php менеджером службы в ключе 'ViewRenderer'. –

Смежные вопросы