ThinkPHP6.0路由传参通过路径变量绑定(如user/:id)自动注入控制器方法,支持可选参数、命名路由生成URL、$this->request->param()获取全参数、正则约束及模型绑定,提升简洁性与健壮性。

ThinkPHP6.0 的路由传参主要靠 URL 路径变量绑定和辅助函数配合实现,核心是让参数自动注入到控制器方法中,而不是手动从 $_GET 或 $request->param() 取值。用对方式,代码更简洁、URL 更美观、逻辑也更清晰。
路径变量绑定(最常用)
在定义路由时用 :参数名 或 声明动态段,框架会自动把对应值按名称或顺序注入操作方法:
-
Route::get('user/:id', 'user/read');→ 方法read($id)自动收到$id -
Route::get('article/→/ ', 'article/archive'); archive($year, $month)按顺序接收 - 可选参数用方括号:
Route::get('list/[:page]', 'list/index');,此时index($page = 1)要设默认值,否则不传page会报错
生成带参 URL(模板或跳转中使用)
用 url() 助手函数生成链接,支持两种写法:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 按路由地址:
{:url('user/read', ['id' => 123])}→ 输出/user/123(需路由已定义为user/:id) - 按路由标识(推荐):先注册时加
->name('user_detail'),再调用{:url('user_detail', ['id' => 123])} - 非路径参数(如搜索关键词)会自动拼成 query 字符串:
{:url('user/index', ['id'=>5, 'search'=>'abc'])}→/user/5?search=abc
获取完整请求参数(含路径+查询)
某些场景(比如分页、筛选)需要保留当前所有参数,不能只靠路径变量:
-
$this->request->param()是安全首选,它合并了路由变量和 GET/POST 参数 - 分页时传给
paginate():'query' => $this->request->param(),避免 search、status 等参数丢失 - 处理带中括号的参数(如
filter[status]=1),用$list->withQuery($_GET),比appends()更可靠
参数验证与约束(增强健壮性)
防止非法输入进入控制器,可在路由定义时加校验规则:
- 限定数字:
Route::get('user/:id', 'user/read')->pattern(['id' => '\d+']); - 限定长度或格式:
->pattern(['name' => '\w{2,10}']) - 绑定模型自动查询:
->model('User'),:id会自动查出 User 对象传入方法
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










