Laravel 7 将支持直接在路由定义中自定义隐式路由模型绑定
在即将发布的下一个 Laravel 主版本中,将支持直接在路由定义中自定义隐式路由模型绑定:
Route::get('/posts/{post:slug}', function (Post $post) {
// ...
});
在当前版本,要实现类似的功能,需要在对应模型类中定义 getRouteKeyName()
方法来实现:
<?php
class Post extends Model
{
/**
* Get the route key for the model.
*
* @return string
*/
public function getRouteKeyName()
{
return 'slug';
}
}
当然,你仍然可以通过定义该方法来实现,不过,直接在路由定义中自定义更灵活,也更简单。例如,如果你在多个路由中设置了隐式模型绑定,显然,直接在路由定义中设置更方便:
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 开发版本:
laravel new example --dev
注:本文整理自 Laravel News,原文链接:https://laravel-news.com/implicit-route-model-binding
2 Comments
卧槽,一年不到就5到7了,估计快不行了吧
先看下这篇:https://xueyuanjun.com/post/21230 Laravel 6 引入语义化版本之后 版本发布流程调整了