Laravel中的動態路由

本教程是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]); })

在 JavaScript 中如何生成 slug

我使用的一段代碼將字符串生成 slug 的方法 export function slugify(str) { // 去除字符串頭尾的空格 str = str.trim() // 將字符串轉換為小寫 str = str.toLowerCase() // 移除重音符號,將 ñ 替換為 n,等等 str = str.normalize('NFD').replace(/[\u0300-\u036f]/g, '') // 移除無效字符 str = str.replace(/[^a-z0-9 -]/g, '') // 將空格替換為連字符 str = str.replace(/\s+/g, '-') // 合併連續的連字符 str = str.replace(/-+/g, '-') return str }