在 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 中定义,可以使用上述示例来帮助你实现常见的路由需求。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部