【问题标题】:Zend Router LogicZend 路由器逻辑
【发布时间】:2011-04-02 05:09:12
【问题描述】:

我正在为如何处理我的 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 个模型查询,但我想不出任何其他方法。

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

【问题讨论】:

    标签: zend-framework zend-route


    【解决方案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

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

    【讨论】:

    • 这很容易。我试图将层次结构放在 URL 中是为了可读性和 SEO,而不是出于实际的脚本编写原因……你的权利,按照你的建议去做很容易,事实上这就是我现在在开发中正在做的事情,但我希望做点什么更多的。我想我可以为用户导航做面包屑。
    • 你会赢什么?我认为简单的方法可读性更好,搜索引擎优化也不会改善!?! KISS 原则似乎适用于此!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多