資源
Laravel7 30天: 目錄
專案連結: github - laravel7 之 30 天分享
前言
專案連結: github - laravel7 之 30 天分享
上一篇: Day 4. VSCode 套件推薦
今天來跟大家分享,使用者的第一個路口:路由
使用
可以先看看[官方文件](https://laravel.com/docs/7.x/routing 官方文件)
Route 的設定在 routes/
裡面,平常最常使用的是 web.php
、api.php
,
頁面用 web.php
、API則可以使用 api.php
,
使用的語法是相同的,今天會以 web.php
為範例進行介紹,
基本語法
1
2
3
4
5
|
# method: GET, 路徑: /hello ,直接回傳: Hello World
Route::get('hello', function () {
return 'Hello World';
});
|
不過通常我們都會這樣使用,
路由只設定路由,這個路由要幹嘛都會交給 Controller 處理,
1
2
3
|
# method: GET, 路徑: /basicRouteUseController ,交給 BasicRouteController 的 Controller Class,Function 是 index()
Route::get('/basicRouteUseController', 'BasicRouteController@index');
|
方法
Laravel 提供的路由有很多 method 可以設定,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Route::get($uri, $callback);
# 單純 post
Route::post($uri, $callback);
# post 通常使用在更新
Route::put($uri, $callback);
Route::patch($uri, $callback);
# post 刪除
Route::delete($uri, $callback);
# 這個我沒有使用過
Route::options($uri, $callback);
|
post如要設定其他 method 可於 html form 表單內設定 @method('PUT')
1
2
3
| <form>
@method('PUT')
</form>
|
參數
參數使用大括號{}
框起來,然後在 function 裡加參數即可使用
1
2
3
4
5
6
7
8
| # /route/web.php
Route::get('/basicRouteWithParam/{id}', 'BasicRouteController@show');
# /app/Http/Controllers/BasicRouteController.php @ show()
public function show($id)
{
echo $id;
}
|
命名
通常我所有的路由都會命名,這樣之後要使用上可以使用 helper 的 route()
直接調用,
萬一哪天 uri 要變更時,只要異動 routes/web.php
即可,
因為所有頁面都是使用 route name 調用
使用方法
1
2
| Route::get('/basicRouteDefineName', 'BasicRouteController@defineName')
->name('thisIsBasicRouteDefineName');
|
如範例就可以使用 route('thisIsBasicRouteDefineName')
取得這個路由
群組
官方有提供 Route::group
可以將路由們分組
使用方式
1
2
3
4
5
6
7
| # prefix = 前綴
# as = name 的前綴
Route::group(['prefix' => 'routeGroups', 'as' => 'routeGroups' ], function() {
Route::get('/a', 'RouteGroupController@a')->name('a');
Route::get('/b', 'RouteGroupController@b')->name('b');
Route::get('/c', 'RouteGroupController@c')->name('c');
});
|
群組後,其實就等於是 …
1
2
3
4
5
| Route::group(['prefix' => 'routeGroups', 'as' => 'routeGroups' ], function() {
Route::get('/routeGroups/a', 'RouteGroupController@a')->name('routeGroups.a');
Route::get('/routeGroups/b', 'RouteGroupController@b')->name('routeGroups.b');
Route::get('/routeGroups/c', 'RouteGroupController@c')->name('routeGroups.c');
});
|
表達上是一樣的,只是比較好閱讀而且看起來比較整齊
小撇步
CRUD 肯定是一個頁面滿基本的需求,我通常會這樣設定,
之後再跟大家聊聊為何我都會這樣設定吧
以會員『新增』、『修改』、『刪除』為範例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Route::group(['prefix' => 'users', 'as' => 'users.'], function () {
// 列表
Route::get('/', 'UserController@index')->name('index');
// 新增
Route::get('/create', 'UserController@create')->name('create');
Route::post('/', 'UserController@store')->name('store');
// 編輯
Route::get('/{user}/edit', 'UserController@edit')->name('edit');
Route::patch('/{user}', 'UserController@update')->name('update');
// 刪除
Route::delete('/{user}', 'UserController@destroy')->name('destroy');
});
|