2011-07-12 44 views
1

我正在建立一个基本的路由系统,以摆脱index.php?page_id = 2的东西,并使用很好形成的URL,如: 新闻/地区/体育/棒球/初级联赛/ 2010 其中,例如,我会带我到2010年的棒球新闻联赛关于子类别路由的思考

基本结构是这样的:有一个路由器评估url并访问一个合适的控制器并调用一些方法(可选)参数。控制器然后调用适当的模型类并将其绑定到一个视图然后输出。 (初级联赛,2010年),我想要访问: 新闻/方法。

我想保持方法模块化,所以没有定义(站点)特定的路线。我只想在我的URL中有一个模式,这样我就可以用正确的参数调用正确的控制器的方法。

如何格式化我的URL并指定一些评估规则,以便获得此行为? (这可能吗?)

解决方案,我认为:

  • URL示例:新闻/区域/体育/棒球/视图/初中联赛/ 2010
    1. 的斜线爆炸(导致的阵列)
    2. 外表用于阵列[0]控制器的方法阵列[1]
    3. 如果该方法存在,则与该参数
    4. 称之为如果不,寻找阵列[1]控制器用数组[2]方法

    5. 优点是这种方法是非常模块化的。唯一的问题是访问一个页面的时间会随着子类别的数量而变长(或者这可以忽略?)。也许这个过程可以通过存储一个站点地图来加快(但那正是我不想要的)
  • 格式化一个这样的网址:[path to controller]/[controller]/[action] - [参数1] - [参数2] 示例:使用该算法的新闻/区域/体育/棒球/视图junior_league-2010
    1. 在“ - ”(生成阵列)[新闻/区域/体育/棒球/ 2010]
    2. 寻找一个名为array [目录controllers/news/regional/sports]中控制器数组[0] [last-1](棒球)中的[0] [last](view)。使用数组的其余部分作为参数。
      缺点是你也使用下划线,网址不再好看。也许这很费时间?

如果你已经通过了这一切阅读,谢谢!也许你可以分享你的想法? Gr Bastiaan

+0

由于您在文档中的努力,我提高了您的问题。由于缺乏经验,我只能指向一个先前为我工作的复杂路由组件https://github.com/symfony/Routing。既然你问“想法” - 这可能不是合适的论坛;) – madflow

回答

1

最近我一直在使用ToroPHP,它使用PHP数组来定义匹配的正则表达式模式,如果匹配时使用处理程序来调用。

看看ToroPHP,也许可以根据您的需求推断部分解决方案。

+0

谢谢!我会考虑的! – Bastiaan