后台用户操作记录管理页面 http://kku_laravel.local.gd/admin/user-actions 报错:
Undefined constant App\Module\User\Enums\ACTION_TYPE::BanCannot access offset of type App\Module\User\Enums\ACTION_TYPE on arrayBan),但枚举定义中使用的是全大写(如 BAN)文件: app/Module/User/Enums/ACTION_TYPE.php
将枚举常量名从全大写改为首字母大写:
BAN → BanRESTRICT → RestrictDELETE → DeleteNORMAL → Normal文件: app/Module/User/AdminControllers/UserActionController.php
修改display函数,正确处理枚举对象:
// 操作类型显示
$grid->column('type', '操作类型')->display(function ($value) {
$typeMap = [
'Ban' => '封禁',
'Restrict' => '禁止登录',
'Delete' => '删除',
'Normal' => '正常化',
];
// $value 是 ACTION_TYPE 枚举对象,需要获取其 name 属性
$typeName = $value instanceof ACTION_TYPE ? $value->name : $value;
return $typeMap[$typeName] ?? $typeName;
});
// 状态显示
$grid->column('status', '状态')->display(function ($value) {
$statusMap = [
ACTION_STATUS::ING->value => '生效中',
ACTION_STATUS::OK->value => '已生效',
ACTION_STATUS::OUT_TIME->value => '已过期',
ACTION_STATUS::END->value => '已结束',
];
// $value 是 ACTION_STATUS 枚举对象,需要获取其 value 属性
$statusValue = $value instanceof ACTION_STATUS ? $value->value : $value;
return $statusMap[$statusValue] ?? '未知';
});
文件: app/Module/User/Services/ActionService.php
更新所有ACTION_TYPE枚举常量的引用:
ACTION_TYPE::BAN → ACTION_TYPE::BanACTION_TYPE::RESTRICT → ACTION_TYPE::RestrictACTION_TYPE::DELETE → ACTION_TYPE::DeleteACTION_TYPE::NORMAL → ACTION_TYPE::Normalapp/Module/User/Enums/ACTION_TYPE.php - 修改枚举常量名称app/Module/User/AdminControllers/UserActionController.php - 修复控制器处理逻辑app/Module/User/Services/ActionService.php - 更新枚举引用✅ 用户操作记录管理列表页面正常显示 ✅ 操作类型正确显示(封禁、禁止登录、删除、正常化) ✅ 状态正确显示(生效中、已生效、已过期、已结束) ✅ 详情页面正常显示 ✅ 筛选功能正常工作
$enum->name 获取常量名$enum->value 获取枚举值instanceof 检查变量类型,确保兼容性修复用户操作记录管理页面枚举常量错误
- 修改ACTION_TYPE枚举常量名称,从全大写改为首字母大写(BAN->Ban, RESTRICT->Restrict等)
- 更新UserActionController中的枚举引用,处理模型cast后的枚举对象
- 更新ActionService中的枚举引用
- 修复页面显示错误:Cannot access offset of type ACTION_TYPE on array
- 确保枚举常量名称与数据库存储值一致