本教程是Laravel手冊的一部分。從https://flaviocopes.com/access/下載。
我們已經了解了如何在 routes/web.php
文件中創建一個路由:
Route::get('/dogs', function () {
return view('dogs');
})->name('dogs');
這是一個靜態路由,對應於 /dogs
URL。
現在假設你想為每一只狗創建一個頁面,也許你會在上面填寫一個描述、一張圖片等等。
你不能為數據庫中的每一只狗創建一個靜態路由,因為你不知道狗的名字。
假設你有兩只狗,Max和Daisy,下面的代碼將在 /dogs/max
和 /dogs/daisy
上顯示一個“dog”視圖(我們尚未創建):
Route::get('/dogs/max', function () {
return view('dog');
})
Route::get('/dogs/daisy', function () {
return view('dog');
})
取而代之,我們在URL中有一個動態分段:
Route::get('/dogs/{slug}', function () {
return view('dog');
})
slug是一個用於識別URL部分的詞,全小寫且不含空格,例如如果狗的名字是Max,那麼slug就是
max
。
現在我們可以將slug
的值傳遞給回調函數(當路由被命中時調用的函數),並在函數內部將它傳遞給視圖:
Route::get('/dogs/{slug}', function ($slug) {
return view('dog', ['slug' => $slug]);
})
現在$slug
變量可以在Blade模板中使用。
但是我們想要檢索實際的狗的數據。我們有slug,可以想象當我們添加狗時,它存儲在數據庫中。
為此,我們在路由中使用了Dog
模型,代碼如下:
use App\Models\Dog;
Route::get('/dogs/{slug}', function ($slug) {
$dog = Dog::find($slug)
return view('dog', ['dog' => $dog]);
})