Laravel 5.6通过参数id进行依赖注入

时间:2018-10-03 19:45:32

标签: php laravel dependency-injection laravel-5.6

我有一条路线:

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

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

});

命令php artisan route:列表: enter image description here

使用命令:

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

我创建了具有方法的资源控制器Admin / PhotoController

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

在数据库表photos中,我有列aliasenter image description here

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

enter image description here

如果在地址栏中,而不是在路由中输入参数 alias 写id admin / photos / 1 / edit +,则删除参数名称alias ,然后正常加载照片模型:

enter image description here

但是对我来说,参数ID不适合,我需要使用别名。请告诉我可能是问题所在,并且有可能吗?

1 个答案:

答案 0 :(得分:0)

默认情况下使用

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

自定义分辨率逻辑是您想要的部分。