0

何が間違っているのかわかりません。2 つの名前付き Zend ルートを取得しました。

$route = new Zend_Controller_Router_Route(
                    'catalog/:categoryIdent/:productIdent/',
                    array(
                        'action' => 'viewproduct',
                        'controller' => 'catalog',
                        'module' => 'eshop',
                        'categoryIdent' => '',
                        'productIdent' => ''                        

                    ),
                    array(
                        'categoryIdent' => '[a-zA-Z-_0-9]+',
                        'productIdent' => '[a-zA-Z-_0-9]+'
                    )
    );
    $router->addRoute('catalog_category_product', $route);

    // catalog category route
    $route = new Zend_Controller_Router_Route(
                    'catalog/:categoryIdent/:page/',
                    array(
                        'action' => 'viewcategory',
                        'controller' => 'category',
                        'module' => 'eshop',
                        'categoryIdent' => '',
                        'page' => ''

                    ),
                    array(
                        'categoryIdent' => '[a-zA-Z-_0-9]+'
                    )
    );

    $router->addRoute('catalog_category', $route);

catalog_category を呼び出すと問題ありませんが、catalog_category_product を呼び出そうとすると、2 番目のルートから viewcategory アクションが使用されます。これは、url、resp の :page 変数の問題を意味します。URL の引数の数が同じですか? 必要ではないと思いますが、2 つの異なるが類似したルートを取得したいと考えています。たとえば、次のようになります。

カテゴリの場合 - カタログ/カテゴリ 1/1

商品の場合 - catalog/category1/product1 (ページ数なし)

ルートcatalog_category_productの形式をcatalog/:categoryIdent/something/:productIdent/に変更すると、うまくいきます

ここにルート呼び出しがあります

$this->url(array('categoryIdent' => categoryIdent, 'productIdent' => productIdent), 'catalog_category_product', true);

$this->url(array('categoryIdent' => 'cerveny-cedr', 'page' => 'pageNumber'), 'catalog_category', true);

助けてくれてありがとう

4

1 に答える 1