Привязка модели маршрута получает объект неопределенным при использовании laravel jwt

#php #laravel #jwt

Вопрос:

Я использую laravel 6 с пакетом tymon/jwt-auth 1.0, я пытаюсь создать только приложение CRUD. Когда я пытаюсь отправить метод PUT для обновления базы данных, к сожалению, привязка модели маршрута не может найти объект с идентификатором, который я указал в URL. Я проверил несколько дел:

  • Список маршрутов существует, метод put и переменная привязки модели сопоставлены
  • Измените промежуточное программное обеспечение с помощью api, это сработало
  • ПОЛУЧИТЬ, сообщение работает нормально
  • Модель использует мягкое удаление, но эта запись не удаляется

Я проверяю ответ методом put, я получаю информацию по умолчанию объектной модели:

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

Вот несколько шагов, которые я сделал:

1. Зарегистрируйте промежуточное программное обеспечение в Kernel.php

 protected $routeMiddleware = [
    'auth' => AppHttpMiddlewareAuthenticate::class,
    'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
    'bindings' => IlluminateRoutingMiddlewareSubstituteBindings::class,
    'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
    'can' => IlluminateAuthMiddlewareAuthorize::class,
    'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
    'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
    'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
    'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
    'cors' => AppHttpMiddlewareCors::class,
    'auth.jwt'  =>  TymonJWTAuthHttpMiddlewareAuthenticate::class, // JWT middleware
];
 

2. Загрузите маршрут в ModuleServiceProvider.php

 $config = config('modules');
foreach ($config as $module) {
    $namespace = "AppModules\".$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;
}
 

Я не вижу, что здесь не так, пожалуйста, помогите мне.