配置路由
路由配置文件 /route/app.php
<?php
use think\facade\Route;
Route::rule('index/create', 'index/create');
Route::rule('index/read', 'index/read');
Route::rule('index/update', 'index/update');
Route::rule('index/delete', 'index/delete');
控制器 /app/controller/Index.php
<?php
namespace app\controller;
use app\BaseController;
class Index extends BaseController
{
public function index()
{
return 'hello,welcome to thinkphp6!';
}
public function create(){
return 'create';
}
public function read(){
return 'read';
}
public function update(){
return 'update';
}
public function delete(){
return 'delete';
}
}
測試url
http://127.0.0.1:8000/index
http://127.0.0.1:8000/index/create
http://127.0.0.1:8000/index/read
http://127.0.0.1:8000/index/update
http://127.0.0.1:8000/index/delete
路由定義
Route::rule('new/:id','News/read','POST');
Route::get('new/<id>','News/read'); // 定義GET請求路由規則
Route::post('new/<id>','News/update'); // 定義POST請求路由規則
Route::put('new/:id','News/update'); // 定義PUT請求路由規則
Route::delete('new/:id','News/delete'); // 定義DELETE請求路由規則
Route::any('new/:id','News/read'); // 所有請求都支持的路由規則
Route::rule('/', 'index'); // 首頁訪問路由
Route::rule('my', 'Member/myinfo'); // 靜態地址路由
Route::rule('blog/:id', 'Blog/read'); // 靜態地址和動態地址結合
Route::rule('new/:year/:month/:day', 'News/read'); // 靜態地址和動態地址結合
Route::rule(':user/:blog_id', 'Blog/read'); // 全動態地址
Route::get('blog/:year/[:month]','Blog/archive');
Route::get('new/:cate$', 'News/category');
Route::redirect('blog/:id', 'http://blog.thinkphp.cn/read/:id', 302);
變量規則
// 定義GET請求路由規則 並設置name變量規則
Route::get('new/:name', 'News/read')
->pattern(['name' => '[\w|\-]+']);
// 支持批量添加
Route::pattern([
'name' => '\w+',
'id' => '\d+',
]);
路由參數
參數 說明 方法名
ext URL后綴檢測,支持匹配多個后綴 ext
deny_ext URL禁止后綴檢測,支持匹配多個后綴 denyExt
https 檢測是否https請求 https
domain 域名檢測 domain
complete_match 是否完整匹配路由 completeMatch
model 綁定模型 model
cache 請求緩存 cache
ajax Ajax檢測 ajax
pjax Pjax檢測 pjax
json JSON檢測 json
validate 綁定驗證器類進行數據驗證 validate
append 追加額外的參數 append
middleware 注冊路由中間件 middleware
filter 請求變量過濾 filter
用法:
Route::get('new/:id', 'News/read')
->ext('html')
->https();
Route::get('new/:id', 'News/read')
->option([
'ext' => 'html',
'https' => true
]);
Route::get('new/:name$', 'News/read')
->cache(3600);
路由中間件
Route::rule('hello/:name','hello')
->middleware(\app\middleware\Auth::class);
Route::rule('hello/:name','hello')
->middleware([\app\middleware\Auth::class,\app\middleware\Check::class]);
全局 config/route.php
'middleware' => [
app\middleware\Auth::class,
app\middleware\Check::class,
],
miss路由
Route::miss('public/miss');
Route::miss(function() {
return '404 Not Found!';
});
跨域請求
Route::get('new/:id', 'News/read')
->ext('html')
->allowCrossDomain();
Route::get('new/:id', 'News/read')
->ext('html')
->allowCrossDomain([
'Access-Control-Allow-Origin' => 'thinkphp.cn',
'Access-Control-Allow-Credentials' => 'true',
'Access-Control-Max-Age' => 600,
]);
URL生成
$url = \think\facade\Route::buildUrl();
$url = \think\facade\Route::buildUrl('index/read', ['id' => 5]);