在ThinkPHP8中,URL访问模式主要涉及路由的配置,它决定了用户如何通过URL来访问应用程序中的控制器和方法。ThinkPHP8支持多种路由模式,包括普通路由、域名路由、路径路由、别名路由等。下面我将给出几个示例来说明如何配置和使用这些路由模式。
1. 基本路由配置(默认模式)
默认情况下,ThinkPHP8使用的是普通路由模式,它会根据URL的路径部分自动匹配到相应的控制器和操作方法。例如,一个基本的路由配置可能如下所示:
// config/
use think\Route;
// 定义一个基本路由,访问 /index/hello 将会调用 Index 控制器的 hello 方法
Route::get('index/hello', 'index/index/hello');
2. 路由参数
你可以定义带有参数的路由,以便更灵活地处理URL中的动态数据:
Route::get('user/:id', 'index/user/detail')
->pattern(['id' => '\d+']); // 指定id参数必须为数字
访问 /user/123
会调用 UserController
中的 detail
方法,并将 123
作为 $id
参数传递。
3. 命名路由
给路由命名可以让你更容易地在代码中引用它,特别是在生成URL时:
Route::get('about-us', 'index/page/about')->name('aboutPage');
之后可以在视图或控制器中使用 url('aboutPage')
来生成对应的URL。
4. 路由分组
如果你有一系列相关的路由,可以将它们放在一个分组内,便于管理:
Route::group('api', function () {
Route::get('user', 'api/UserController@index');
Route::post('user', 'api/UserController@store');
})
->prefix('v1') // 为这个组的所有路由添加前缀
->middleware('auth'); // 应用中间件到组内所有路由
这样,访问 /api/v1/user
会应用相应的控制器和中间件。
5. 域名路由
你还可以根据不同的域名来定义路由:
Route::domain('')->group(function () {
Route::get('index', 'admin/IndexController@index');
});
这会使得 /index
映射到 Admin/IndexController
的 index
方法。