0

我正在为如何处理我的 URL 映射而苦苦挣扎。现在,我正在使用 Zend 框架构建一个照片库系统。画廊系统可以处理类别和画廊。一个类别中可以有子类别或画廊。显然,画廊有一个图像。这意味着我可以有以下 URL 可能性...

domain.com/gallery/ <== 主画廊页面

domain.com/gallery/category1/gallery1/ <==显示图片库

domain.com/gallery/category1/category2/ <== 显示画廊画廊

domain.com/gallery/category1/category2/gallery1 <== 显示图片库

domain.com/gallery/category3/gallery2/image1 <== 显示单个图像页面

domain.com/gallery/gallery3/ <== 禁用类别因此它显示图像库

如何处理多个选项?如果有一个简单的任务总是 /{category}/{gallery}/{image}/ 那么我可以把它放在一起。但是我正在努力解决如何在变量数量发生变化的情况下对其进行管理。

如果我假设每个 Gallery/Category/Image 都有一个唯一的名称,这意味着画廊和类别不共享相同的名称,那么我可以简单地忽略除最后一个变量之外的所有变量。我可以设置一个脚本来获取最后一个变量,将其与图像表、图库表和类别表进行比较,然后在第一个变量受到影响时将其转发到正确的视图。虽然这听起来相当耗费资源,每次调用图库系统可能需要 3 个模型查询,但我想不出任何其他方法来解决它。

任何人有任何想法或建议来最有效地做到这一点?

4

1 回答 1

1

网址不需要知道类别的层次结构,IMO。如果您同意并且鉴于该画廊是一个控制器,您可以像这样解决它:

domain.com/gallery/display/gallery/23
domain.com/gallery/display/category/42
domain.com/gallery/display/image/5

这意味着您只有一个显示操作,其余的作为参数传递。如果您通过参数库,则显示具有相应 ID 的库,如果您通过参数类别,则检查此类别是否有子类别并显示它们或相应的画廊。

您还可以考虑一个解决方案,其中您有一个画廊模块、一个显示控制器和画廊、类别、图像操作。在这种情况下,您需要在 url 中添加 /id/ 部分:

domain.com/gallery/display/gallery/id/23

让您的模型找出层次结构并用面包屑或类似的方式反映它。

于 2011-04-01T21:09:12.543 回答