2011-04-01 71 views
0

我正在努力处理我的URL映射。现在,我正在使用Zend Framework来构建一个照片库系统。画廊系统可以处理类别和画廊。一个类别可以包含子类别或画廊。显然,一个画廊有一个形象。这意味着我可以有下列网址可能性...Zend路由器逻辑

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} /那么我可以把它放在一起。但我在如何管理变量数量发生变化的问题上挣扎。

如果我与每个画廊/分类/图像具有独特的名字,意思是一个画廊和类别不共享同一名称的假设运行,那么我可以简单地忽略所有的变量除了最后一个。我可以设置一个脚本,它接受最后一个变量,将它与图像表,图表表格和类别表进行比较,然后在第一个变量获得匹配时将其转发到正确的视图。虽然这听起来相当资源密集,可能有3个模型查询每次调用图库系统时,我无法想出任何其他方式去解决这个问题。

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

回答

1

URL没有需要知道类别的层次结构,IMO。如果您同意并给予该库是一个控制器,你可以解决这个问题是这样的:

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

这将意味着你只是有一个显示操作,并将其余的参数作为params传递。如果你通过帕拉姆画廊,就展现出与各自的ID画廊,如果你通过帕拉姆类别,你检查,如果这个类有子类,并告诉他们或相应画廊。

你也能想到,你有一个画廊模块,显示控制器和画廊,类,图像操作的解决方案。在这种情况下,你需要在URL中添加/ ID /部分:

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

让你的模特身材出层次和用面包屑或类似物反映它。

+0

这很容易。我试图把层次结构放在可读性和SEO的URL中,而不是实际的脚本理由......你的权利,按照你的建议很容易,事实上我正在开发中,但是希望能够做一些事情更多。我想我可以为用户导航做面包屑。 – 2011-04-01 22:05:37

+0

你会赢?我认为可读性更好,简单的方法和搜索引擎优化也不会改善!?! KISS原则似乎适用于此! – markus 2011-04-02 11:47:40

+0

听起来不错。谢谢! – 2011-04-03 01:09:39