thinkphp route 配置 示例

embedded/2024/11/17 21:20:28/

在 ThinkPHP 中,路由配置允许你将 URL 请求映射到指定的控制器和方法。路由配置文件一般位于 application/route.php 中,下面是一些常见的路由配置示例。

1. 基本路由配置

最基本的路由配置方式是将 URL 路径映射到指定的控制器方法。

use think\facade\Route;// 将 /hello 映射到 Index 控制器的 hello 方法
Route::get('hello', 'index/hello');// 将 /product 映射到 Product 控制器的 index 方法
Route::get('product', 'product/index');

2. 带参数的路由

你可以在路由中使用参数,参数可以通过 URL 传递。

// 捕获 id 参数,映射到 Product 控制器的 detail 方法
Route::get('product/:id', 'product/detail');

ProductController 中,你可以通过 $id 来获取传递的参数。

// ProductController.php
public function detail($id)
{return 'Product ID: ' . $id;
}

3. 路由参数约束

你可以为路由参数添加约束,指定参数的格式。

// 参数 id 必须是数字
Route::get('product/:id', 'product/detail')->pattern(['id' => '\d+']);

4. 使用正则路由

ThinkPHP 允许你为路由使用正则表达式来匹配复杂的 URL 模式。

// 匹配 /article/1234 格式的 URL
Route::get('article/:id', 'article/show')->pattern(['id' => '\d+']);

5. 路由别名

可以为路由设置别名,使得你可以使用不同的 URL 来访问相同的路由。

// 将 /profile 映射到 User 控制器的 info 方法
Route::get('profile', 'user/info')->name('user.profile');

6. 路由分组

可以使用路由分组来管理不同模块的路由。

Route::group('admin', function () {// 映射到 admin 模块的 User 控制器的 index 方法Route::get('user', 'admin/user/index');Route::get('product', 'admin/product/index');
});

7. 路由缓存

对于生产环境,ThinkPHP 提供了路由缓存功能,以提高性能。

// 在生产环境中,可以使用以下命令缓存路由配置
php think route:cache

8. 自定义 HTTP 请求类型

你可以为路由指定请求类型,如 getpostputdelete 等。

// POST 请求方式访问该路由
Route::post('submit', 'index/submit');// PUT 请求方式访问该路由
Route::put('update/:id', 'index/update');

9. 路由回调方法

你可以使用闭包函数定义一个匿名路由。

Route::get('hello', function () {return 'Hello, ThinkPHP!';
});

10. 路由重定向

ThinkPHP 允许你使用路由重定向,将一个 URL 重定向到另一个 URL。

// 将 /old-url 重定向到 /new-url
Route::get('old-url', function () {return redirect('new-url');
});

11. 控制器命名空间

在路由中,通常会指定控制器的完整命名空间。

// 映射到 app\admin\controller\User 的 index 方法
Route::get('admin/user', 'admin/user/index');

12. 路由缓存清理

如果你对路由做了修改,需要清理缓存。

// 清理路由缓存
php think route:clear

总结

ThinkPHP 的路由功能非常强大,你可以通过灵活的路由配置来控制 URL 和控制器方法之间的映射关系。路由配置文件通常在 application/route.php 中定义,可以使用上述示例来帮助你实现常见的路由需求。


http://www.ppmy.cn/embedded/138067.html

相关文章

前端开发迈向全栈之路:规划与技能

一、前端开发与全栈开发的差异 前端开发主要负责构建和实现网页、Web 应用程序和移动应用的用户界面。其工作重点在于网页设计和布局,使用 HTML 和 CSS 技术定义页面的结构、样式和布局,同时运用前端框架和库如 React、Angular 或 Vue.js 等构建交互式和…

0x00基础算法 -- 0x05 排序

1、离散化 排序算法的第一个应用:离散化。 “离散化”就是把无穷大(无限)的集合中的若干个(有限)元素映射为有限集合以便于统计的方法。 例如:问题的范围定义在整数集合,但是只涉及其中m个有限的…

Android OpenGLES2.0开发(八):Camera预览

严以律己,宽以待人 引言 终于到该章节了,还记得Android OpenGLES2.0开发(一):艰难的开始章节说的吗?写这个系列的初衷就是因为每次用到GLSurfaceViewCamera预览时,总是CtrlC、CtrlV从来没有研究…

Halcon 3D平面度

平面度是对表面形状的一种度量,用于指示该表面上的所有点是否都在同一个平面上。平面度在几何尺寸和公差(GD&T)中用平行四边形表示,当两个表面必须装配在一起形成紧密密封时,平面度就特别有用。 使用平面度公差是…

蓝桥杯c++算法学习【3】之思维与贪心(重复字符串、翻硬币、乘积最大、皮亚诺曲线距离【难】:::非常典型的必刷例题!!!)

别忘了请点个赞收藏关注支持一下博主喵!!! 关注博主,更多蓝桥杯nice题目静待更新:) 思维与贪心 一、重复字符串 【问题描述】 如果一个字符串S恰好可以由某个字符串重复K次得到,我们就称S是K次重复字 符串…

工业大数据分析与应用:开启智能制造新时代

在全球工业4.0浪潮的推动下,工业大数据分析已经成为推动智能制造、提升生产效率和优化资源配置的重要工具。通过收集、存储、处理和分析海量工业数据,企业能够获得深刻的业务洞察,做出更明智的决策,并实现生产流程的全面优化。本文…

QT5.14*解决QSslSocket::connectToHostEncrypted: TLS initialization faile

qDebug()<<"QSslSocket"<<QSslSocket::sslLibraryBuildVersionString();通过上述代码在QT控制台查看对应需要的SSL版本&#xff0c;QT5.14.*输出的内容为&#xff1a; OpenSSL 1.1.1d 10 Sep 2019从官方下载openssl安装包即可&#xff0c;在官网找了很…

pycharm连接oracle数据库查询数据

查询当前python版本在 Terminal中使用命令 pip version Python-oracledb 的默认精简模式可以连接到 Oracle 数据库 12.1 或更高版本。如果要连接到 Oracle 数据库 11.2&#xff0c;则需要通过在代码中调用 oracledb.init_oracle_client() 来启用厚模式。否则会提示版本不支持。…