在 Laravel 8 中显示 slug 而不是 id 进行 CRUD

1 crud slug laravel

我正在我的 laravel crud 项目上创建一个编辑部分。当我按下编辑键时,它将重定向到edit.blade.php将调用 slug 而不是它们的 id 的 。我已经研究过了,它显示了错误Too few arguments to function App\Http\Controllers\ProductController::edit(), 1 passed and exactly 2 expected

我的路线

Route::get('edit/{slug}', $url. '\productController@update');
Route::get('edit', $url. '\productController@edit');
Run Code Online (Sandbox Code Playgroud)

我的 ProductController::edit()

public function edit(Product $product, $slug)
    {
        return view('edit', compact('product'));
    }
Run Code Online (Sandbox Code Playgroud)

我的 ProductController::update()

public function update(Request $request, Product $product, $slug)
    {
        Product::where('product_slug',$request->$slug)->update([
            'product_title' => $request->title,
            'product_slug'  => $request->slug,
            'product_image' => $request->image
            ]);

            // redirect
            return redirect('edit');
    }
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,提前致谢

小智 13

您无需担心任何事情。只需将以下代码添加到您的产品模型中:

public function getRouteKeyName()
{
    return 'slug';
}
Run Code Online (Sandbox Code Playgroud)

Laravel 会处理剩下的事情。欲了解更多信息,请访问下面的链接,他们在那里有很好的解释:

https://laravel.com/docs/8.x/routing#customizing-the-default-key-name