0

基本的に、他のURLをオーバーライドする必要がある2つのモジュールがあります

/management/category/edit/id/1 (カテゴリー編集ページ)

/management/category/index (管理モジュールのカテゴリのインデックス ページ)

/management/category (管理モジュールのカテゴリのインデックス ページ)

/women-like-men/category (/default/category/view/id/women-like-men からルーティングされる URL)

上記のルールは次のとおりです。

    $router->addRoute('view-category',      new Zend_Controller_Router_Route(':id/category/:page',  array('module' => 'default', 'controller' => 'category', 'action' => 'view', 'page' => null)));
    $router->addRoute('management/category',    new Zend_Controller_Router_Route('management/category/',    array('module' => 'management', 'controller' => 'category', 'action' => 'index')));

このような「競合」(ギャラリー、ムービー、ユーザー) などの同様のページがたくさんあります。

私が本当に欲しいのは、モジュール管理/コントローラー/アクションへの /management/* ルートを指定し、以下のルールを無視するというルールです。とにかく、ユーザー/ギャラリー/映画/カテゴリが管理と呼ばれる可能性は低いです。

出来ますか?

編集、私はこれを作った:

    $router->addRoute('administration',         new Zend_Controller_Router_Route_Regex('management/?(.*)/?(.*)', array('module' => 'management'), array(1 => 'controller', 2 => 'action')));

/management/category は問題なく動作しますが、それ以降は 404 になります

4

1 に答える 1

1

これは簡単です。ルートを定義する順序は重要です。それらは逆の順序でチェックされるため、管理ルールが他のルールを「オーバーライド」するために、最後に定義する必要があります (つまり、他のすべてのルートの後)。このようなもの(基本的にはあなたが持っているもの)が動作するはずです:

$route = new Zend_Controller_Router_Route(
    'management/:controller/:action/*',
    array(
        'module' => 'management'
        'controller' => 'index',
        'action' => 'index'
    )
);
$router->addRoute('management', $route);

この後も管理 URL のいずれかが 404 になっている場合、それらはそのルートと一致していないため、調整する必要があるか、他のケースに一致するように他の管理ルートが必要です。

于 2011-02-16T23:47:51.273 に答える