腾讯云618限量抢购
  1. PHP基础教程
  2. PHP+MySQL数据库教程

ThinkPHP U方法中使用路由的问题与解决办法

最后更新:2011-04-25 16:58阅读:16630

U方法中使用路由的问题

在 ThinkPHP 2.0 版本,U方法中使用路由会有明显的问题(bug)。下面以本节前文《ThinkPHP 路由使用》文中的例子为例来说明在ThinkPHP U方法中使用路由的问题与解决方案。

路由定义(如果使用 ThinkPHP 2.1RC 及更高版本,请同时参阅《ThinkPHP 2.1 路由规则对比 2.0 版本的变更》)如下:

return array(
    // 常规路由
    'product'=>array('Products', 'show', 'category,product_id', 'status=1'),
)

对应的 URL 访问地址例子如下:

index.php/product/5/123

根据《ThinkPHP2.0完全开发手册》例子,在U方法中使用该路由:

<a href="{:U('product@?category=3&product_id=123')}">产品详情</a>

生成的 URL 地址如下:

<a href="index.php/product/category/3/product_id/123">产品详情</a>

显然生成的 URL 地址有误。

U方法中使用路由

要在U方法中使用路由,简单一点的办法是依照实际的URL地址手动写定,如上例的写法为:

<a href="{:U('product/3/123')}">产品详情</a>

如果有项目分组或者URL参数分隔符为 - 等:

// 项目分组
U('Admin/product/3/123')
// 参数分隔符为 -
U('product/3-123')
// 项目分组,参数分隔符为 -
U('Admin-product/3-123')
// 参数分隔符为 - ,参数为变量的例子
U('product/'.$_GET['cat_id'].'-'.$list['product_id'])

在 ThinkPHP 2.0 版本,U方法中使用路由的 bug ,只希望在后续版本中能得到完善与解决。


本章节内容共分 7 部分:
  1. 1. ThinkPHP URL 路由功能详解与实例
  2. 2. ThinkPHP 2.0 泛路由使用详解(2.0 版本适用)
  3. 3. ThinkPHP 2.1 版本 URL 路由规则对比 2.0 版本的变更
  4. 4. ThinkPHP 使用U方法自动生成URL超链接
  5. 5. ThinkPHP U方法中使用路由的问题与解决办法
  6. 6. ThinkPHP URL 正则路由与实例
  7. 7. ThinkPHP 2.0 URL 路由(2.0版本适用)
腾讯云618限量抢购