zend rest route нарушает маршрутизацию для контроллера по умолчанию

Я реализовал службу RESTful, расширив Zend_Rest_Controller. Сервис работает отлично. У меня только один контроллер с RESTful-поведением. Поэтому я добавил оставшийся маршрут только для этого контроллера в загрузчике.

protected function _initRestRoute()
{
    $this->bootstrap('frontController');
    $frontController = Zend_Controller_Front::getInstance();
    $restRoute = new Zend_Rest_Route($frontController, array() , array('default' =>     array('MyserviceController')));
    $frontController->getRouter()->addRoute('rest', $restRoute);

}  

проблема начинается, когда я запускаю приложение портала zend. Ссылки в макете для контроллера индекса пропускают параметр действия, когда я создаю URL. Например, ссылка на макет индекса для домашней страницы действия в сетевом контроллере выглядит следующим образом.

$this->url(array('controller'=>'network','action'=>'homepage','module'=>'default'));

это должно вернуть «localhost / projectname / public / network / homepage» вместо «localhost / projectname / public / network». Такое поведение наблюдается только тогда, когда макет загружается контроллером по умолчанию, то есть IndexController. Проблема маршрутизации исчезнет, ​​если я удалю маршрут zend rest из начальной загрузки. Пока я упоминаю, какой контроллер должен маршрутизировать остальной запрос, не должно быть проблемой. Но это влияет на маршрутизацию контроллера по умолчанию.


person biker46s    schedule 02.03.2012    source источник


Ответы (1)


Кажется, это обычная проблема, которую обычно решают примерно так:

$this->url(array('controller'=>'network','action'=>'homepage','module'=>'default'), 'default');

or:

$this->url(array('controller'=>'network','action'=>'homepage','module'=>'default'), NULL, TRUE);

может работать.

если ваш 'module'=>'default' является каталогом контроллеров по умолчанию в/application/controllers, вы можете опустить параметр модуля в маршруте.

Вот весь метод URL-адреса, обратите внимание на комментарии для параметра сброса.

/**
     * Generates an url given the name of a route.
     *
     * @access public
     *
     * @param  array $urlOptions Options passed to the assemble method of the Route object.
     * @param  mixed $name The name of a Route to use. If null it will use the current Route
     * @param  bool $reset Whether or not to reset the route defaults with those provided
     * @return string Url for the link href attribute.
     */
    public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
    {
        $router = Zend_Controller_Front::getInstance()->getRouter();
        return $router->assemble($urlOptions, $name, $reset, $encode);
    }
person RockyFord    schedule 04.03.2012