1

ルーターを作成し、このようにコントローラーに追加しました

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、新しいルートではなく標準ルートを使用します。

4

1 に答える 1

0

私が考えることができる唯一のことは、フロントコントローラーリソースがinitメソッドの前に「ブートストラップ」されていないことです。

少なくともフロントコントローラーリソースをブートストラップして取得する必要があります

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

ブートストラップinitメソッドの作成をスキップして、アプリケーション構成でルーターリソースを構成してみませんか?

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"

テストとして、上記の構成を追加し、これを使用してを作成しましPageControllerlistAction

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"
}
于 2011-09-06T12:21:36.780 に答える