【问题标题】:Different route key name for a single route in LaravelLaravel 中单个路由的不同路由键名
【发布时间】:2019-09-10 21:42:16
【问题描述】:

我知道我可以使用getRouteKeyName 方法更改整个模型的路由键名称,但是如何更改单个路由的路由键名称?假设我有一个 Post 模型,并且路由键名显然是 id,我想为 show 路由设置 slug 键名。是否有可能以某种方式管理getRouteKeyName 方法来实现这一目标?

public function getRouteKeyName()
{
    return 'slug';
}

【问题讨论】:

  • 只需在函数public function show($slug){ model::where('slug', $slug)->first(); 中使用slug,您就可以根据需要通过slug 或任何其他字段显示模型。 ps 后模型默认为id,您也可以相应地更改它。
  • 谢谢,我知道,但问题是我到处都在使用 post show 路由,我不想每次都将 slug 参数传递给路由方法,比如route( 'posts.show', [ 'post' => $post->slug ] )

标签: laravel routes


【解决方案1】:

找到了解决方案:)

AppServiceProvider 类中,我将以下代码添加到boot 方法中。

Route::bind('posts.show', function ($value) {
    return App\Post::where('slug', $value)->first() ?? abort(404);
});

【讨论】:

  • 您应该使用RouteServiceProvider,而不是AppServiceProvider
猜你喜欢
  • 2018-10-20
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 2013-12-26
相关资源
最近更新 更多