【问题标题】:Laravel 5.6 Dependency injection through parameter idLaravel 5.6 通过参数 id 进行依赖注入
【发布时间】:2019-03-09 03:08:44
【问题描述】:

我有一条路线:

Route::group(['prefix' => 'admin', 'middleware' => 'auth', 'as' => 'admin.'], function () {

    Route::resource('photos', 'Admin\PhotoController', [
        'parameters' => [
            'photos' => 'alias'
        ]
]); 

});

命令 php artisan route:list:

使用命令:

php artisan make:controller Admin/PhotoController --resource --model=Models/Photo

我创建了资源控制器 Admin/PhotoController,它有一个方法

    public function edit(Photo $photo)
    {
        dd($photo);
    }

在数据库表photos 我有列alias

为什么当我通过 url-address admin/photos/alias1/edit 时,laravel 5.6 不会自动加载 alias = alias1 的模型 Photo,而是加载一个空模型:

如果在地址行而不是参数alias写id admin/photos/1/edit+在路由中,删除参数名alias,则Photo模型加载正常:

但是对我来说参数 id 不适合,我需要使用别名 请告诉我可能是什么问题,是否可以这样做?

【问题讨论】:

    标签: php laravel dependency-injection laravel-5.6


    【解决方案1】:

    默认使用 ID。这称为隐式路由模型绑定。您需要使用显式路由模型绑定并注册 alias1 以在服务提供者中使用。在这里查看:https://laravel.com/docs/5.6/routing#explicit-binding

    自定义解析逻辑是您想要的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 2019-10-18
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 2021-03-12
      相关资源
      最近更新 更多