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の値に が追加されている可能性があります。基本的な Zend_Router で回避するよりも.htm、ちょっとした .htaccess マジックでリクエストから を削除する方がおそらく簡単です)。RewriteRule

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

別の方法は、カスタムまたは正規表現ルートを使用することです

于 2010-05-07T07:37:30.237 に答える