暂无 |

ThinkPHP 2.1 路由

ThinkPHP 2.1 版本(包括 2.1RC 版本)启用了全新的 URL 路由定义规则,与 2.0 本版相比,有两个方面的区别:

  1. 路由配置方式:支持 routes.php 文件配置与配置文件 Config.php 中使用 URL_ROUTE_RULES 选项进行配置
  2. 路由配置规则。

另外在 2.1 版本中,还解决了路由名称不能使用大写英文字符的 bug 。

routes.php 文件配置

ThinkPHP 2.1 版本路由规则做了较大改动,原规则:

return array(
    // 常规路由
    '路由名称'=>array('模块名称', '操作名称', '参数定义', '额外参数'),

    // 泛路由
    '路由名称@'=>array(
        array('路由匹配正则', '模块名称', '操作名称', '参数定义', '额外参数'),
    ),
)

变更为:

return array(
    // 常规路由
    array('路由名称','[分组/]模块/操作名', '路由对应变量','额外参数')

    // 泛路由
    array('正则定义','[分组/]模块/操作名', '路由对应变量','额外参数')
)

路由例子

前面2.0版本中 ThinkPHP路由使用ThinkPHP泛路由 两文中的路由例子,对应 2.1 版本中变更如下:

return array(
    // 常规路由
    array('product','Products/show', 'category,product_id', 'status=1')
    // 解析到分组
    array('product2','Admin/Products/show', 'category,product_id', 'status=1')

    // 泛路由
    array('/^product/(\d+)/(\d+)$/is','Products/archive', 'year,month')
)

可以看出,定义规则做了一定的变更,其中泛路由中,正则定义匹配从 APP_NAME 后开始而不是像 2.0 版本从路由名后开始匹配,如下红色部分:

http://www.520mg.com/index.php/product/2010/10

另外增加了PHP正则修正符 i(忽略大小写)和 s(将字符串视作一行,换行符作为普通字符匹配),这个是具体情况是否需要,关于正则表达式更多信息参见《PHP 正则表达式》。

Config.php 文件配置

除了可以在 routes.php 文件进行路由配置外,也可以直接在配置文件 Config.php 中使用 URL_ROUTE_RULES 项目进行设置,定义规则一致:

'URL_ROUTE_RULES' => array(
    array('product','Products/show', 'category,product_id', 'status=1')
    array('/^product/(\d+)/(\d+)$/is','Products/archive', 'year,month')
),

如果有 routes.php 文件配置,将会优先使用 routes.php 文件配置中的路由定义。

总的来说,ThinkPHP 2.1 版本的路由配置在配置规则上显得更加统一简练,同时也提供了在配置文件 Config.php 中直接配置路由。

0

java教程
php教程
php+mysql教程
ThinkPHP教程
MySQL
C语言
css
javascript
Django教程

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论