我不知道我做错了什么。我有两条名为 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 时,使用了第二条路线的 viewcategory 操作。这意味着它与 :page 变量在 url 中的问题,resp。URL中的参数数量相同?我认为这不是必需的,我想获得两条不同但相似的路线 - 例如:
对于类别 - 目录/类别 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);
谢谢你的帮助