何が間違っているのかわかりません。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);
助けてくれてありがとう