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


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Laravel 8 新特性和功能优化速览

>> 下一篇: Laravel 6 之后新版本的发布周期介绍