Laravel 7 将推出简化的隐式路由模型绑定
发布时间 作者 Paul Redmond
在 即将于 2020 年 2 月发布的 Laravel 主要版本 中,您可以在路由定义中直接自定义隐式路由模型绑定。
Route::get('/posts/{post:slug}', function (Post $post) { // ...});
目前,Laravel 6 及更早版本需要您在模型上定义一个 getRouteKeyName()
方法,如下所示:
<?php class Post extends Model{ /** * Get the route key for the model. * * @return string */ public function getRouteKeyName() { return 'slug'; }}
您仍然可以使用 getRouteKeyName()
方法;但是,我觉得在路由定义中直接自定义它更灵活。
也许您有多个想要不同绑定的路由。例如,前端路由使用 slug 来显示帖子,而后台管理使用 id 来管理帖子。
Route::get('/posts/{post:slug}', function (Post $post) { // ...}); // Or you could use the default `{post}` here...Route::get('/admin/posts/{post:id}/edit', function (Post $post) { // ...});
如果您想开始尝试自定义隐式路由模型绑定,您可以安装 Laravel 的开发版本。
laravel new example --dev