Zend Framework не заботится об указанном Custom Route - PullRequest
1 голос
/ 06 сентября 2011

Я создал роутер и добавил к контроллеру вот так

public function _initRouting() {          
    // Get Front Controller Instance         
    $front = Zend_Controller_Front::getInstance();  
    // Get Router
    $router = $front -> getRouter();
    $routePage = new Zend_Controller_Router_Route('/page/:action/:cat/:parent/:id', array(
        'controller' => 'page',
        'action'    => 'list',
        'cat'       => 'general',
        'parent'    => '0',
        'module'    => 'default'
    ));
    $router -> addRoute('page', $routePage);
}

Сначала этот роутер ничего не делает, когда я перехожу на /page/list/general/0/1, это стандартный маршрут, а не новый.

1 Ответ

0 голосов
/ 06 сентября 2011

Единственное, о чем я могу думать, это то, что ресурс фронт-контроллера не был "загружен" до вашего метода init.

Вы должны хотя бы загрузить и извлечь ресурс фронт-контроллера

protected function _initRouting()
{
    $this->bootstrap('frontController');
    $front = $this->getResource('frontController');
    // etc

Почему бы просто не пропустить создание метода начальной загрузки и настроить ресурс маршрутизатора в конфигурации вашего приложения?

resources.router.routes.page.route = "page/:action/:cat/:parent/:id"
resources.router.routes.page.defaults.module = "default"
resources.router.routes.page.defaults.controller = "page"
resources.router.routes.page.defaults.action = "list"
resources.router.routes.page.defaults.cat = "general"
resources.router.routes.page.defaults.parent = "0"

В качестве теста я добавил вышеуказанный конфиг и создал PageController с этим listAction

public function listAction()
{
    Zend_Debug::dump($this->getRequest()->getParams());
    exit;
}

Вызов page/list/general/0/1 Выход

array(6) {
  ["action"] => string(4) "list"
  ["cat"] => string(7) "general"
  ["parent"] => string(1) "0"
  ["id"] => string(1) "1"
  ["module"] => string(7) "default"
  ["controller"] => string(4) "page"
}
...