【发布时间】:2013-05-28 17:21:15
【问题描述】:
我正在为我的项目使用 Codeigniter。 我需要得到这样的 URL 结构:
主产品页面
example.com/language-prefix/products/
按类别选择产品
example.com/language-prefix/products/category
按类别和子类别选择产品:
example.com/language-prefix/products/category/sub-category
在类别和子类别下选择特定产品:
example.com/language-prefix/products/category/sub-category/product-name
或仅在类别下
example.com/language-prefix/products/category/product-name
问题是 - 对此有什么好的解决方案?因为问题从这里开始:
example.com/language-prefix/products/category/what-ever
what-ever 可以是产品或子类别以及如何决定 - 应返回哪些数据和视图?
在我的数据库表结构中,产品和类别之间存在多对多关系。这意味着,可以将一种产品分配到多个类别。每个类别都有一个自引用的外键(父)。
也许我需要为产品添加类别获得一些限制?或者指定一个主要类别或什么?
我有几个想法:
- 例如,将类别/子类别和产品的每条路线保留在 DB 中:
/产品/手表/男士/ /products/watches/for-men/rolex-abc-whatever-product
等等,等等。但是这个,我感觉可能会很慢。
- 创建一个到产品控制器的简单路由 -> 方法 view(),并在该方法中遍历所有通过的段以及何时进行
/products/category/what-ever
然后先检查是否存在这样的产品,如果是,则返回product_view和数据,如果没有,检查是否有这样的子类别,如果有,则返回产品网格,如果没有则返回404。
我假设一个简单的解决方案是在 /products/ 之后保留所有类别和子类别并添加 category-id 之类的
example.com/language-prefix/products/1-watches
example.com/language-prefix/products/2-for-men
但我希望有更好的解决方案。
我也想不通:
example.com/language-prefix/products/category/sub-category/product-name
我需要返回名称为 product-name 的产品,并检查它是否属于这两个类别,例如 URL:
example.com/language-prefix/products/hello-kity/bla-bla/product-name
不会退回该产品。
有更好的/其他解决方案吗?
【问题讨论】:
-
我只是不明白“我也无法弄清楚这个......”这行之后的最后一部分,请详细说明。你的意思是它不会退回该产品?
-
从浏览器 url 隐藏语言前缀有什么想法吗?
标签: codeigniter routes