本節內容主要講解Laravel框架的路由詳解,主要講解路由的定義,參數,規則,訪問控制器等操作。
一、常用路由動作
語法
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
常用路由方式
Route::post('/', function () {
return view('welcome');
});
Route::get('/', function () {
return view('welcome');
});
Route::delete('/', function () {
return view('welcome');
});
...... 或者直接請求控制器
Route::post('/', 'WelcomeController@index');
Route::get('/', 'WelcomeController@index');
Route::delete('/', 'WelcomeController@index');
任何請求方式匹配
Route::any(['get', 'post'], '/', function () {
return view('welcome');
});
Route::any(['get', 'post'], '/', 'WelcomeController@index');
白名單數組匹配match組合
Route::match(['get', 'post'], '/', function () {
return view('welcome');
});
Route::match(['get', 'post'],'/', 'WelcomeController@index');
重定向路由
Route::redirect('/here', '/404', 404);
二、參數路由
Route::get('user/{id?}', function ($id = 1) {
return "用戶ID: " . $id;
});
正則方式的參數路由
Route::get('page/{id}', function ($id) {
return '頁面ID: ' . $id;
})->where('id', '[0-9]+');
Route::get('page/{name}', function ($name) {
return '頁面名稱: ' . $name;
})->where('name', '[A-Za-z]+');
Route::get('page/{id}/{slug}', function ($id, $slug) {
return $id . ':' . $slug;
})->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']);
三、路由別名(以user.profile進行訪問)
Route::get('user/{id?}', function ($id = 1) {
return "用戶ID: " . $id;
})->name('user.profile');
// 訪問方式:
<a href="{{ route('user.profile', ['id' => 100]) }}">
四、路由分組
Route::group([], function () {
Route::get('hello', function () {
return 'Hello';
});
Route::get('world', function () {
return 'World';
});
});
五、路由分組、中間件(2中方式-一般使用第二種)
Route::middleware('auth:api')->group(function () {
Route::get('dashboard', function () {
return view('dashboard');
});
Route::get('account', function () {
return view('account');
});
});
或者
Route::group(['middleware' => 'auth:api'], function () {
Route::get('dashboard', function () {
return view('dashboard');
});
Route::get('account', function () {
return view('account');
});
});
六、路由路徑前綴
Route::prefix('api')->group(function () {
Route::get('/', function () {
// 處理 /api 路由
})->name('api.index');
Route::get('users', function () {
// 處理 /api/users 路由
})->name('api.users');
});
七、路由子域名
Route::domain('{account}.blog.test')->group(function (){
Route::get('/', function ($account) {
//TODO
});
Route::get('user/{id}', function ($account, $id) {
//TODO
});
});
八、路由命名空間
Route::namespace('Admin')->group(function() {
// App\Http\Controllers\Admin\AdminController
Route::get('/admin', 'AdminController@index');
});
路由命名空間、前綴、分組、參數、別名組合
// 路由命名+路徑前綴
Route::name('user.')->prefix('user')->group(function () {
Route::get('{id?}', function ($id = 1) {
// 處理 /user/{id} 路由,路由命名爲 user.show
return route('user.show'); })->name('show');
Route::get('posts', function () {
// 處理 /user/posts 路由,路由命名爲 user.posts
})->name('posts');
});
九、訪問當前路由
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
十、清除路由緩存
php artisan route:cache
十一、刪除路由緩存
php artisan route:clear
通過以上的學習總結,我們已經學會了Laravel的路由定義、訪問方式,而且路由非常的方便,對於新手來說,學習起來非常的方便,也非常容易學會。
更多內容請關注公衆號(Laravel技術社區),帶你走進乾貨的世界。