在 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 地址有误。