【发布时间】:2012-02-22 13:34:58
【问题描述】:
我的 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 中的路由是反向匹配的。所以我尝试了以下网址。
- example.com/site/index/index -> OK(执行动作/控制器 => 索引/索引)
- example.com/bags/bag-7 -> OK(执行动作/控制器 => 产品/视图)
- example.com/index/index -> 错误(执行操作/控制器 => 产品/视图,但这应该是默认路由的一部分,在末尾定义)
这是问题所在,我不明白为什么不应用默认控制器/动作路由。
【问题讨论】:
标签: zend-framework