[英]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 方法检查响应我得到默认 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.