代码之家  ›  专栏  ›  技术社区  ›  ChrisR

Zend框架的不同url方案

  •  0
  • ChrisR  · 技术社区  · 15 年前

    可能的url是www.example.com/our-team/developers/chris/ 它将在树结构中映射到节点chris,它是开发人员的子节点,而开发人员又是outteam的子节点。

    所有这些都是在适当的地方和工作感谢奇妙的实现嵌套集行为在条令。唯一的问题是,我正在努力让它在我们的网站前端工作。默认情况下,Zend框架的请求对象需要controller/action/key/value/key/value/。。。URI方案,但这不太适合我的需要,我想跳过整个控制器,动作和关键部分,并限制到值。类似value1/value2/value3/value4/。。。

    有人知道如何做到这一点吗?

    您可能想知道我是如何将请求映射到控制器/操作的?每个不可调度的请求(因此不是现有的控制器/操作)都由错误控制器处理,在那里,我将请求URI与树结构中的路径匹配,从而能够显示页面(如果路径匹配),如果不匹配,错误控制器将继续并响应404。

    3 回复  |  直到 12 年前
        1
  •  3
  •   coudenysj    15 年前

    我通过扩展 Zend_Controller_Router_Route_Abstract 班级。

    通过将其添加到路由器堆栈中,可以使用使用许多路由的“瀑布”系统。

    published the code 比特塔曼

        2
  •  2
  •   chelmertz user1604064    15 年前

    这个用例映射到 controller/action/value :controller/:action/:username 定义自定义路线时。

    看到了吗 Using a Router

        3
  •  1
  •   Bittarman    15 年前

    首先,我会停止使用错误控制器来提供路由。那简直是糟糕的juju。

    现在,当处理这样的路由结构时,有一些事情需要考虑,一个是与默认路由冲突,所以如果你依赖它,你需要对你的操作严格。

    考虑到您在这里提供的信息,我建议您将route类划分为子类,并对数据库执行(缓存)查找,然后从那里返回正确的模块/控制器/操作,并直接转到正确的操作。

    然后还可以在请求参数(页面内容、团队成员详细信息等)中传递相关数据,以便在操作中不需要进一步的db查找,如果没有查找错误,则操作代码也不需要。