Zend Router Logic

时间:2011-04-01 15:22:19

标签: zend-framework zend-route

我正在努力解决如何处理我的URL映射问题。现在,我正在使用Zend Framework整合照片库系统。图库系统可以处理类别和图库。类别可以包含子类别或库。显然,画廊有一个图像。这意味着我可以拥有以下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/&lt; ==禁用类别因此会显示图片库

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

如果我假设每个图库/类别/图像都有一个唯一的名称,这意味着图库和类别不共享相同的名称,那么我可以简单地忽略除最后一个之外的所有变量。我可以设置一个脚本,它接受最后一个变量,将它与图像表,图库表,然后是类别表进行比较,然后在第一个变量获得命中时将其转发到正确的视图。虽然这听起来相当资源密集,每次调用图库系统时可能会有3个模型查询,但我无法理解任何其他方式。

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

1 个答案:

答案 0 :(得分:1)

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

  

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

这意味着你只需要一个显示动作,然后将其余部分作为参数传递。如果您通过参数库,则显示具有相应ID的图库,如果您通过参数类别,则检查此类别是否具有子类别并显示它们或相应的图库。

您还可以想到一个解决方案,其中包含图库模块,显示控制器和图库,类别,图像操作。在这种情况下,您需要在url中添加/ id / part:

  

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

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