繁体   English   中英

使用 laravel ZCFD61B8A7397FA7C10B2AE548F5BEFFA 时,路由 model 绑定得到 object 未定义

[英]Route model binding get object undefined when use laravel jwt

我使用 laravel 6 和 tymon/jwt-auth 1.0 package,我只尝试创建 CRUD 应用程序。 当我尝试发送 PUT 方法来更新数据库时,不幸的是,路由 model 绑定找不到我在 url 中提供的 ID 的 object。 我检查了一些案例:

  • 路由列表存在 put 方法和 model 绑定变量匹配
  • 用 api 更改中间件,它工作
  • GET,POST工作正常
  • Model 使用软删除但没有删除此记录

我用 put 方法检查响应我得到默认 object model 的信息:

{
    parent_task: null,
    status: {id: "-999", slug: "notfound", name: "Not Found", color: "black", actived: false}
}

以下是我已经完成的一些步骤:

1.在Kernel.php中注册中间件

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can' => \Illuminate\Auth\Middleware\Authorize::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
    'cors' => \App\Http\Middleware\Cors::class,
    'auth.jwt'  =>  \Tymon\JWTAuth\Http\Middleware\Authenticate::class, // JWT middleware
];

2. ModuleServiceProvider.php中加载路由

$config = config('modules');
foreach ($config as $module) {
    $namespace = "App\Modules\\".$module."\Controllers";
    $routePath = app_path("Modules/$module/Routes/apx.php");
    if ( File::exists($routePath) ) {
        Route::prefix('apx')->middleware(['auth.jwt', 'cors'])->namespace($namespace)->group($routePath);
    }
}

3.注册路线

Route::group(['prefix' => 'com'], function() {
    Route::get('tasks/{task}', 'TaskController@getDetail');
    Route::put('tasks/{task}', 'TaskController@putSave')->name('A_1');
    Route::post('tasks', 'TaskController@postSave')->name('A_2');
});

4.写一个put方法

// update
public function putSave(SaveRequest $request, Task $task)
{
    $task->update($request->all());
    return $task;
}

我看不出这里有什么问题,请帮助我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM