[英]Zend Router Logic
我在努力处理我的URL映射。 现在,我正在使用Zend Framework组合照相馆系统。 画廊系统可以处理类别和画廊。 类别可以包含子类别或画廊。 显然,画廊有图像。 这意味着我可以使用以下网址...
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都有一个唯一的名称,这意味着Gallery和Category不具有相同的名称,那么我可以简单地忽略除最后一个变量以外的所有变量。 我可以设置一个脚本,该脚本接受最后一个变量,将其与图像表,图库表和类别表进行比较,然后在第一个变量被命中时将其转发到正确的视图。 虽然这听起来相当耗费资源,但对图库系统的每个调用都可能需要3个模型查询,但是我无法理解其他解决方法。
任何人都有任何想法或建议来最有效地做到这一点?
该URL不需要知道类别的层次结构IMO。 如果您同意并且考虑到画廊是控制者,则可以这样解决:
domain.com/gallery/display/gallery/23
domain.com/gallery/display/category/42
domain.com/gallery/display/image/5
这意味着您只需要执行显示操作,然后将其余的作为参数传递。 如果您通过了param画廊,则显示带有相应ID的画廊,如果通过了param类别,则检查该类别是否包含子类别并显示它们或相应的画廊。
您还可以想到一个解决方案,其中具有图库模块,显示控制器和图库,类别,图像操作。 在这种情况下,您需要在网址中添加一个/ id /部分:
domain.com/gallery/display/gallery/id/23
让您的模型找出层次结构,并用面包屑或类似内容反映出来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.