我的zend框架应用程序中有一个模块(站点)。我要做的是首先检查控制器/操作是否存在,如果不存在则尝试将URL与某些自定义路由匹配。
我在_bootstrap.php中的代码如下:
$router = $this->frontController->getRouter();
$router->removeDefaultRoutes();
// catalog category product route
$route = new Zend_Controller_Router_Route(
':categoryIdent/:productIdent',
array(
'action' => 'view',
'controller' => 'product',
'module' => 'site',
'categoryIdent' => '',
'productIdent' => ''
),
array(
'categoryIdent' => '[a-zA-Z-_0-9]+',
'productIdent' => '[a-zA-Z-_0-9]+'
)
);
$router->addRoute('catalog_category_product', $route);
$router->addDefaultRoutes();
我知道Zend Framework中的路由是向后匹配的。所以我尝试了以下网址。
这是问题,我不明白为什么不应用默认控制器/操作路由。
答案 0 :(得分:0)
您的第三个示例与catalog_category_product-route的模式匹配。这就是发送到产品/视图的原因。
您可以尝试将需求添加到:productIdent和/或:categoryIdent,以使索引/索引与这些要求不匹配。
The reference manual explains how to set variable requirements
编辑:我错过了,你已经提出了要求。但索引/索引仍然匹配:categoryIndent /:productIndent。你可以使用以下正则表达式:productIndent,假设它总是word - dash - number:
'/^([a-z]+-[0-9]+)$/'