開啟 routes 資料夾,裡面有幾個不同的檔案,分別用在不同的情境,但其實裡面的寫法是一樣的,差別在於 Middleware 不一樣。
我們寫網站最常用的當然是 web.php,基本上網站的路由都應該放在這裡,因為這個檔案裡的路由都會受到 web 這個 Middleware 的保護。
如果有不同的傳輸方式都要套用到同樣的動作,那我們可以使用 match。
我們寫網站最常用的當然是 web.php,基本上網站的路由都應該放在這裡,因為這個檔案裡的路由都會受到 web 這個 Middleware 的保護。
一、基本
最基本的 route 使用方法,由 Route::[傳輸方式]('[網址規則]', [處理函式]) 組成。Route::get('/', function () { return view('welcome'); });上面這個例子代表網站根目錄要給使用者看到 welcome 這個 View。 我們也可以回傳不同的東西,例如:字串。
如果有不同的傳輸方式都要套用到同樣的動作,那我們可以使用 match。
Route::match(['get', 'post'], '/', function () { // });
二、參數
Route::get('post/{id}', function ($id) { return '文章 id:' . $id; });在 5.3 以後可以使用正規表達式來限制變數的內容,但我個人覺得不常用,所以需要自己查官網。
三、給 route 一個名字
下面兩個方法都可以,不過我個人偏好第二種。Route::get('post', ['as' => 'post.index', function () { // }]); Route::get('post', function () { // })->name('post.index');為什麼要幫 route 取名字呢?因為這樣我們可以在其他程式裡方便快速的使用他們。
return redirect()->route('post.index');
<a href="{{ route('post.index') }}">文章</a>
四、指定 Controller
Route::get('post', 'PostController@index')->name('post.index');
五、Group
當我們有很多 route 都共有一些設定的時候我們可以使用 group 把他們包起來,代表這些 route 都套用設定。最常見的就是 middleware、prefix。Route::group(['middleware' => 'auth', 'prefix' => 'admin'], function () { Route::get('post', 'PostController@index')->name('post.index'); Route::get('post/create', 'PostController@create')->name('post.create'); });
六、Route Model Binding
Route::get('post/{post}', function (App\Post $post) { return $post->title; });重點在於變數名字要一樣,如果不一樣的話 binding 不起來。 在網址的地方其實我們還是帶 id(primary key) 進去,只是我們可以減少自己去資料庫查詢的動作,Laravel 會幫我們做好。
留言
張貼留言