Thinkphp5基礎——09 路由

TimChen666發表於2018-12-12

完整定義(不推薦使用)

Route::rule('訪問名','模組/控制器/方法'[,'請求方式'][,'路由檢測規則(陣列)'][,'變數規則(陣列)]')

除了前兩個引數,其餘引數皆為可選。

如果想要支援多種請求方式,可以使用|

為了明確定義路由請求型別,不推薦使用這種方式定義路由。



例子


Route::rule('hello','index/index/hello','GET|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::get('訪問名/:引數名','模組/控制器/方法');

5.1.6+ 推薦使用<var>
Route::get('訪問名/<引數名>','模組/控制器/方法');

:name可以在接收方法使用$name去獲取,詳細請看小例子。


小例子


定義的路由:
Route::get('hello/<id>','index/index/hello');


index模組index控制器的hello方法
public function hello($id){
	// $id將自動關聯我們定義的路由引數id	
	return $id;
}

	





變數規則

有兩種設定方式,

第一種: 在定義路由的時候,最後一個引數傳入一個陣列,key為引數名,value為正則。
		
		如: Route::get('test/<id>','index/index/test',[],['id' => '\d+']);


(更推薦下面這種方式)
第二種:先定義路由,然後呼叫pattern方法,傳入陣列。
		
		如:Route::get('test/<id>','index/index/test')
		         ->pattern(['id' => '\d+']);





路由分組

使用路由分組,可以充分利用分組的匹配機制提高路由解析效能。

這塊內容很簡單,直接上程式碼。


Route::group('blog', function() {
	Route::get('<id>$', 'blog/read');
	Route::get('<id>/edit$', 'blog/edit');
})->pattern(['id' => '\d+']);





MISS路由

Route::miss('模組/控制器/方法')

當所有路由都匹配不到時,將會執行MISS路由。

MISS路由可以和上面的路由分組組合起來,在分組裡面設定MISS路由。

相關文章