Zend Rest Router испортил маршрутизацию для контроллера по умолчанию - PullRequest
0 голосов
/ 02 марта 2012

Я реализовал службу 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 portal.Ссылки в макете для контроллера индекса упускают параметр action при создании URL-адреса.Например, ссылка на макет индекса для домашней страницы действия в сетевом контроллере выглядит следующим образом:

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

, это должно вернуть "localhost / projectname / public / network / homepage", вместо этого оно возвращает "localhost / projectname/ государственная / сеть».Это происходит только тогда, когда макет загружается контроллером по умолчанию, то есть IndexController.Проблема маршрутизации исчезает, если я удаляю Zend Rest Route из начальной загрузки.Пока я упоминаю, к какому контроллеру должен направляться запрос rest, проблема не должна быть правильной.Но это влияет на маршрутизацию контроллера по умолчанию.

1 Ответ

0 голосов
/ 04 марта 2012

Это, кажется, распространенная проблема и обычно решается с помощью чего-то вроде:

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

или

$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);
    }
...