1

我想用 ZF 路由器实现这样的目标。( 'controller' => 'products', 'action' => 'index')

//Show product details   
'http://mydomain.com/en/products/category-1/subcategory-3/product-name.htm'

//List products in subcategory-3
'http://mydomain.com/en/products/category-1/subcategory-3.htm'

//List products in category-1
'http://mydomain.com/en/products/category-1.htm'

//List products in all categories
'http://mydomain.com/en/products.htm'

我是否必须将每种可能性指定为单独的路线?还是有更好的解决方案?(使用Route_Regex?)

4

1 回答 1

1

您可以通过使用如下的空默认值来获得近似的路由:

resources.router.routes.products.route = ":lang/products/:category/:subcategory/:product"
resources.router.routes.products.defaults.category=""  
resources.router.routes.products.defaults.subcategory=""       
resources.router.routes.products.defaults.product=""
resources.router.routes.products.defaults.controller="products"
resources.router.routes.products.defaults.action="index"

该路线不会处理您的.htm扩展/en/products.htm,并且类别/子类别/产品可能会.htm附加到它们的值。.htm使用一点 .htaccess 魔法从请求中剥离可能更容易,RewriteRule而不是使用基本的 Zend_Router 解决它)

 RewriteRule /([^/]+)/products(.*)\.htm /$1/products$2

另一种方法是使用自定义或正则表达式路由

于 2010-05-07T07:37:30.237 回答