【乾貨】一篇文章學會Laravel框架所有路由知識

本節內容主要講解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技術社區),帶你走進乾貨的世界。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章