#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;
}
Я не вижу, что здесь не так, пожалуйста, помогите мне.