代码之家  ›  专栏  ›  技术社区  ›  Petr Peller

Zend路由器提供各种URL

  •  1
  • Petr Peller  · 技术社区  · 16 年前

    '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 ?)

    1 回复  |  直到 15 年前
        1
  •  1
  •   gnarf    16 年前

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

    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 RewriteRule 魔术,而不是使用基本的Zend_路由器)

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

    另一种选择是使用 Custom or Regular Expression route

    推荐文章