exceedone / exment

Exment is open source software for managing information assets on the Web. / Exmentは、情報資産をWeb上で管理するための、オープンソースソフトウェアです。
https://exment.net/docs/#
GNU General Public License v3.0
266 stars 66 forks source link

画像カラム(複数選択OK)を持つデータに対し、API(put-value)で画像以外のカラムを更新しようとすると500エラー #1410

Open gggorugoda opened 8 months ago

gggorugoda commented 8 months ago

Describe the bug / バグの説明

画像カラム(複数選択OK)に値を持つデータに対して API(put-value)で画像以外のカラムを更新しようとすると500エラーが発生する。

To Reproduce / 再現手順

1)下記構造のカスタムテーブル「test」を用意する   ・name(1行テキスト)   ・images(画像、複数選択可、必須フラグOFF) 2)カスタムテーブル「test」にデータを登録する  ・1件目・・・name=あああ、images=なし  ・2件目・・・name=いいい、images=画像を1件セット  ・3件目・・・name=ううう、images=画像を2件セット 3)データ更新API を使って nameのみ更新する  ・1件目 →成功  ・2件目 →500エラー  ・3件目 →500エラー

Version / 発生バージョン

v5.0.10

Error log / エラーログ

[2024-01-12 01:32:54] local.ERROR: Encore\Admin\Form\Field\MultipleFile::hydrateFiles(): Argument #1 ($value) must be of type array, Illuminate\Support\Collection given, called in /var/www/exment/vendor/exceedone/laravel-admin/src/Form/Field/MultipleFile.php on line 95 {"userId":6,"exception":"[object] (TypeError(code: 0): Encore\\Admin\\Form\\Field\\MultipleFile::hydrateFiles(): Argument #1 ($value) must be of type array, Illuminate\\Support\\Collection given, called in /var/www/exment/vendor/exceedone/laravel-admin/src/Form/Field/MultipleFile.php on line 95 at /var/www/exment/vendor/exceedone/laravel-admin/src/Form/Field/MultipleFile.php:107)
[stacktrace]
#0 /var/www/exment/vendor/exceedone/laravel-admin/src/Form/Field/MultipleFile.php(95): Encore\\Admin\\Form\\Field\\MultipleFile->hydrateFiles()
#1 /var/www/exment/vendor/exceedone/exment/src/Model/CustomTable.php(751): Encore\\Admin\\Form\\Field\\MultipleFile->getValidator()
#2 /var/www/exment/vendor/exceedone/exment/src/Model/CustomTable.php(588): Exceedone\\Exment\\Model\\CustomTable->getValidateRules()
#3 /var/www/exment/vendor/exceedone/exment/src/Controllers/ApiDataController.php(652): Exceedone\\Exment\\Model\\CustomTable->validateValue()
#4 /var/www/exment/vendor/exceedone/exment/src/Controllers/ApiDataController.php(288): Exceedone\\Exment\\Controllers\\ApiDataController->saveData()
#5 /var/www/exment/vendor/exceedone/exment/src/Controllers/ApiDataController.php(47): Exceedone\\Exment\\Controllers\\ApiDataController->dataUpdate()
#6 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Exceedone\\Exment\\Controllers\\ApiDataController->callAction()
#7 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#8 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#9 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Router.php(798): Illuminate\\Routing\\Route->run()
#10 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#11 /var/www/exment/vendor/exceedone/exment/src/Middleware/CheckForAnyScope.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#12 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Exceedone\\Exment\\Middleware\\CheckForAnyScope->handle()
#13 /var/www/exment/vendor/exceedone/exment/src/Middleware/LogOperation.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#14 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Exceedone\\Exment\\Middleware\\LogOperation->handle()
#15 /var/www/exment/vendor/exceedone/exment/src/Middleware/Morph.php(20): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#16 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Exceedone\\Exment\\Middleware\\Morph->handle()
#17 /var/www/exment/vendor/exceedone/exment/src/Middleware/AuthenticateApi.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#18 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Exceedone\\Exment\\Middleware\\AuthenticateApi->handle()
#19 /var/www/exment/vendor/exceedone/exment/src/Middleware/IpFilterBase.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#20 /var/www/exment/vendor/exceedone/exment/src/Middleware/ApiIPFilter.php(16): Exceedone\\Exment\\Middleware\\IpFilterBase->handleBase()
#21 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Exceedone\\Exment\\Middleware\\ApiIPFilter->handle()
#22 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#23 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#24 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(126): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#25 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(102): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest()
#26 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(54): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequestUsingNamedLimiter()
#27 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
#28 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#29 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Router.php(799): Illuminate\\Pipeline\\Pipeline->then()
#30 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Router.php(776): Illuminate\\Routing\\Router->runRouteWithinStack()
#31 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Router.php(740): Illuminate\\Routing\\Router->runRoute()
#32 /var/www/exment/vendor/laravel/framework/src/Illuminate/Routing/Router.php(729): Illuminate\\Routing\\Router->dispatchToRoute()
#33 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Illuminate\\Routing\\Router->dispatch()
#34 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#35 /var/www/exment/vendor/exceedone/exment/src/Middleware/ExmentDebug.php(15): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#36 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Exceedone\\Exment\\Middleware\\ExmentDebug->handle()
#37 /var/www/exment/vendor/exceedone/exment/src/Middleware/TrustProxies.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#38 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Exceedone\\Exment\\Middleware\\TrustProxies->handle()
#39 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#40 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#41 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#42 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#43 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#44 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#45 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#46 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#47 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#48 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#49 /var/www/exment/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#50 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\HandleCors->handle()
#51 /var/www/exment/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#52 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle()
#53 /var/www/exment/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#54 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\\Pipeline\\Pipeline->then()
#55 /var/www/exment/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#56 /var/www/exment/public/index.php(52): Illuminate\\Foundation\\Http\\Kernel->handle()
#57 {main}
"} 

Screenshots / スクリーンショット

スクリーンショット 2024-01-12 1 51 30

Additional context / その他

Add any other context about the problem here. / その他に記載すべき内容がありましたら、ご記載ください。

KajitoriAdmin commented 4 months ago

@gggorugoda v6.0.3 でリリースしました。