diff --git a/app/DTOs/BoardDTO.php b/app/DTOs/BoardDTO.php index 520bb21..7f4a934 100644 --- a/app/DTOs/BoardDTO.php +++ b/app/DTOs/BoardDTO.php @@ -9,7 +9,7 @@ class BoardDTO extends CommonDTO public ?int $worker_uid = null; public string $category = ''; public string $title = ''; - public string $status = STATUS['AVAILABLE']; + public string $status = ''; public string $content = ''; public function __construct(array $datas = []) diff --git a/app/DTOs/CommonDTO.php b/app/DTOs/CommonDTO.php index a1fcb57..48745da 100644 --- a/app/DTOs/CommonDTO.php +++ b/app/DTOs/CommonDTO.php @@ -20,20 +20,36 @@ abstract class CommonDTO $type = $property->getType(); $assignValue = $value; + // 1. 빈 문자열('') 처리 로직 개선 if ($value === '') { - $assignValue = null; - } elseif ($type instanceof ReflectionNamedType) { + // 프로퍼티가 null을 허용하는 경우에만 null 할당 + if ($type instanceof ReflectionNamedType && $type->allowsNull()) { + $assignValue = null; + } else { + // null을 허용하지 않는 경우, 타입별 기본값 지정 + $typeName = ($type instanceof ReflectionNamedType) ? $type->getName() : ''; + $assignValue = ($typeName === 'int' || $typeName === 'float') ? 0 : ''; + } + } + // 2. 값이 존재할 때의 타입별 캐스팅 로직 + elseif ($type instanceof ReflectionNamedType) { $typeName = $type->getName(); - // [추가] 타입이 array인 경우 처리 + // 타입이 array이고 입력값이 문자열인 경우 (CSV -> Array) if ($typeName === 'array' && is_string($value)) { $assignValue = explode(DEFAULTS["DELIMITER_ROLE"], $value); - } elseif ($typeName === 'int' && is_numeric($value)) { + } + // 타입이 int이고 입력값이 숫자형인 경우 + elseif ($typeName === 'int' && is_numeric($value)) { $assignValue = (int) $value; } - // ... float 등 기존 로직 ... + // 타입이 float이고 입력값이 숫자형인 경우 + elseif ($typeName === 'float' && is_numeric($value)) { + $assignValue = (float) $value; + } } + // 최종 값 할당 $this->{$key} = $assignValue; } } diff --git a/app/DTOs/Customer/ClientDTO.php b/app/DTOs/Customer/ClientDTO.php index a1b85b9..ef21e5f 100644 --- a/app/DTOs/Customer/ClientDTO.php +++ b/app/DTOs/Customer/ClientDTO.php @@ -8,10 +8,10 @@ class ClientDTO extends CommonDTO { public ?int $uid = null; public ?int $user_uid = null; - public string $site = SITES['prime']; + public string $site = ''; public string $name = ''; public string $phone = ''; - public string $email = 'test@example.com'; + public string $email = ''; public array $role = []; public int $account_balance = 0; public int $coupon_balance = 0; diff --git a/app/DTOs/Customer/Wallet/WalletDTO.php b/app/DTOs/Customer/Wallet/WalletDTO.php index 35835bc..f8d8de4 100644 --- a/app/DTOs/Customer/Wallet/WalletDTO.php +++ b/app/DTOs/Customer/Wallet/WalletDTO.php @@ -6,14 +6,14 @@ use App\DTOs\CommonDTO; class WalletDTO extends CommonDTO { - final public ?int $uid = null; - final public ?int $user_uid = null; - final public ?int $clientinfo_uid = null; - final public string $title = ''; - final public ?int $amount = 0; - final public ?int $balance = 0; - final public string $status = STATUS['DEPOSIT']; - final public string $content = ''; + public ?int $uid = null; + public ?int $user_uid = null; + public ?int $clientinfo_uid = null; + public string $title = ''; + public ?int $amount = 0; + public ?int $balance = 0; + public string $status = ''; + public string $content = ''; public function __construct(array $datas = []) { diff --git a/app/DTOs/Equipment/CHASSISDTO.php b/app/DTOs/Equipment/CHASSISDTO.php index 6305dfc..88c203c 100644 --- a/app/DTOs/Equipment/CHASSISDTO.php +++ b/app/DTOs/Equipment/CHASSISDTO.php @@ -11,7 +11,7 @@ class CHASSISDTO extends CommonDTO public int $price = 0; public int $used = 0; public int $stock = 0; - public string $status = STATUS['AVAILABLE']; + public string $status = ''; public function __construct(array $datas = []) { diff --git a/app/DTOs/Equipment/LineDTO.php b/app/DTOs/Equipment/LineDTO.php index 117375c..51dd293 100644 --- a/app/DTOs/Equipment/LineDTO.php +++ b/app/DTOs/Equipment/LineDTO.php @@ -11,7 +11,7 @@ class LineDTO extends CommonDTO public string $bandwith = ''; public string $start_at = ''; public string $end_at = ''; - public string $status = STATUS['AVAILABLE']; + public string $status = ''; public string $content = ''; public function __construct(array $datas = []) diff --git a/app/DTOs/Equipment/ServerDTO.php b/app/DTOs/Equipment/ServerDTO.php index ca7a338..1d2072f 100644 --- a/app/DTOs/Equipment/ServerDTO.php +++ b/app/DTOs/Equipment/ServerDTO.php @@ -17,7 +17,7 @@ class ServerDTO extends CommonDTO public int $price = 0; public string $manufactur_at = ''; public string $format_at = ''; - public string $status = STATUS['AVAILABLE']; + public string $status = ''; public function __construct(array $datas = []) { parent::__construct($datas); diff --git a/app/DTOs/MylogDTO.php b/app/DTOs/MylogDTO.php index fb6e82b..c2ddeb3 100644 --- a/app/DTOs/MylogDTO.php +++ b/app/DTOs/MylogDTO.php @@ -8,7 +8,7 @@ class MylogDTO extends CommonDTO public ?int $user_uid = null; public string $title = null; public string $content = ''; - public string $status = STATUS['AVAILABLE']; + public string $status = ''; public function __construct(array $datas = []) { diff --git a/app/DTOs/Part/PartDTO.php b/app/DTOs/Part/PartDTO.php index ac5ac91..4f00302 100644 --- a/app/DTOs/Part/PartDTO.php +++ b/app/DTOs/Part/PartDTO.php @@ -6,10 +6,10 @@ use App\DTOs\CommonDTO; class PartDTO extends CommonDTO { - final public ?int $uid = null; - final public string $title = ''; - final public int $price = 0; - final public string $status = STATUS['AVAILABLE']; + public ?int $uid = null; + public string $title = ''; + public int $price = 0; + public string $status = ''; public function __construct(array $datas = []) { diff --git a/app/DTOs/PaymentDTO.php b/app/DTOs/PaymentDTO.php index 5371691..157e02b 100644 --- a/app/DTOs/PaymentDTO.php +++ b/app/DTOs/PaymentDTO.php @@ -16,7 +16,7 @@ class PaymentDTO extends CommonDTO public int $billing_month = 0; public string $pay = ''; public string $status = STATUS['UNPAID']; - public string $content = null; + public string $content = ''; public function __construct(array $datas = []) { diff --git a/app/DTOs/UserDTO.php b/app/DTOs/UserDTO.php index 454126c..804b5ce 100644 --- a/app/DTOs/UserDTO.php +++ b/app/DTOs/UserDTO.php @@ -12,7 +12,7 @@ class UserDTO extends CommonDTO public string $email = ''; public string $mobile = ''; public array $role = []; - public string $status = STATUS['AVAILABLE']; + public string $status = ''; public function __construct(array $datas = []) { diff --git a/app/Entities/BoardEntity.php b/app/Entities/BoardEntity.php index 530d771..7446862 100644 --- a/app/Entities/BoardEntity.php +++ b/app/Entities/BoardEntity.php @@ -12,7 +12,7 @@ class BoardEntity extends CommonEntity protected $attributes = [ 'category' => '', 'title' => '', - 'status' => STATUS['AVAILABLE'], + 'status' => '', 'content' => '' ]; public function __construct(array|null $data = null) @@ -23,4 +23,12 @@ class BoardEntity extends CommonEntity { return $this->attributes['user_uid'] ?? null; } + final public function getWorkerUid(): int|null + { + return $this->attributes['worker_uid'] ?? null; + } + final public function getCaregory(): string + { + return $this->attributes['category'] ?? ""; + } } diff --git a/app/Entities/Customer/ClientEntity.php b/app/Entities/Customer/ClientEntity.php index 519d540..0e2d53e 100644 --- a/app/Entities/Customer/ClientEntity.php +++ b/app/Entities/Customer/ClientEntity.php @@ -9,15 +9,15 @@ class ClientEntity extends CustomerEntity const PK = ClientModel::PK; const TITLE = ClientModel::TITLE; protected $attributes = [ - 'site' => SITES['prime'], + 'site' => '', 'name' => '', 'phone' => '', - 'email' => 'test@example.com', + 'email' => '', 'role' => [], 'account_balance' => 0, 'coupon_balance' => 0, 'point_balance' => 0, - 'status' => STATUS['AVAILABLE'], + 'status' => '', 'history' => '' ]; public function __construct(array|null $data = null) @@ -25,7 +25,7 @@ class ClientEntity extends CustomerEntity parent::__construct($data); } - final public function getUserUid(): int|null + public function getUserUid(): int|null { return $this->attributes['user_uid'] ?? null; } diff --git a/app/Entities/Customer/ServiceEntity.php b/app/Entities/Customer/ServiceEntity.php index 8db8de2..f4483ff 100644 --- a/app/Entities/Customer/ServiceEntity.php +++ b/app/Entities/Customer/ServiceEntity.php @@ -21,7 +21,7 @@ class ServiceEntity extends CustomerEntity 'amount' => 0, 'start_at' => '', 'end_at' => '', - 'status' => STATUS['AVAILABLE'], + 'status' => '', 'history' => '' ]; public function __construct(array|null $data = null) diff --git a/app/Entities/Customer/Wallet/AccountEntity.php b/app/Entities/Customer/Wallet/AccountEntity.php index e275859..1dcdca6 100644 --- a/app/Entities/Customer/Wallet/AccountEntity.php +++ b/app/Entities/Customer/Wallet/AccountEntity.php @@ -8,12 +8,19 @@ class AccountEntity extends WalletEntity { const PK = AccountModel::PK; const TITLE = AccountModel::TITLE; + protected $attributes = [ + 'title' => '', + 'bank' => '', + 'alias' => '', + 'issue_at' => '', + 'amount' => 0, + 'balance' => 0, + 'status' => '', + 'content' => '' + ]; public function __construct(array|null $data = null) { parent::__construct($data); - $this->attributes['bank'] = ''; - $this->attributes['alias'] = ''; - $this->attributes['issue_at'] = ''; } //기본기능 public function getBank(): string diff --git a/app/Entities/Customer/Wallet/CouponEntity.php b/app/Entities/Customer/Wallet/CouponEntity.php index df3b70a..c2a1b5a 100644 --- a/app/Entities/Customer/Wallet/CouponEntity.php +++ b/app/Entities/Customer/Wallet/CouponEntity.php @@ -6,8 +6,16 @@ use App\Models\Customer\Wallet\CouponModel; class CouponEntity extends WalletEntity { + const PK = CouponModel::PK; const TITLE = CouponModel::TITLE; + protected $attributes = [ + 'title' => '', + 'amount' => 0, + 'balance' => 0, + 'status' => '', + 'content' => '' + ]; public function __construct(array|null $data = null) { parent::__construct($data); diff --git a/app/Entities/Customer/Wallet/PointEntity.php b/app/Entities/Customer/Wallet/PointEntity.php index 996d9ed..27ba7ed 100644 --- a/app/Entities/Customer/Wallet/PointEntity.php +++ b/app/Entities/Customer/Wallet/PointEntity.php @@ -8,6 +8,13 @@ class PointEntity extends WalletEntity { const PK = PointModel::PK; const TITLE = PointModel::TITLE; + protected $attributes = [ + 'title' => '', + 'amount' => 0, + 'balance' => 0, + 'status' => '', + 'content' => '' + ]; public function __construct(array|null $data = null) { parent::__construct($data); diff --git a/app/Entities/Customer/Wallet/WalletEntity.php b/app/Entities/Customer/Wallet/WalletEntity.php index 7bef4f4..d95d08e 100644 --- a/app/Entities/Customer/Wallet/WalletEntity.php +++ b/app/Entities/Customer/Wallet/WalletEntity.php @@ -7,14 +7,6 @@ use App\Entities\Customer\CustomerEntity; abstract class WalletEntity extends CustomerEntity { - protected $attributes = [ - 'title' => '', - 'amount' => 0, - 'balance' => 0, - 'status' => STATUS['DEPOSIT'], // 기본 상태 - 'content' => '' - ]; - public function __construct(array|null $data = null) { parent::__construct($data); diff --git a/app/Entities/Equipment/CHASSISEntity.php b/app/Entities/Equipment/CHASSISEntity.php index c126ccb..816dec1 100644 --- a/app/Entities/Equipment/CHASSISEntity.php +++ b/app/Entities/Equipment/CHASSISEntity.php @@ -13,7 +13,7 @@ class CHASSISEntity extends EquipmentEntity 'price' => 0, 'used' => 0, 'stock' => 0, - 'status' => STATUS['AVAILABLE'], + 'status' => '', ]; public function __construct(array|null $data = null) { diff --git a/app/Entities/Equipment/LineEntity.php b/app/Entities/Equipment/LineEntity.php index 400eede..c9915ed 100644 --- a/app/Entities/Equipment/LineEntity.php +++ b/app/Entities/Equipment/LineEntity.php @@ -12,7 +12,7 @@ class LineEntity extends EquipmentEntity 'bandwith' => '', 'start_at' => 0, 'end_at' => 0, - 'status' => STATUS['AVAILABLE'], + 'status' => '', 'content' => '', ]; public function __construct(array|null $data = null) diff --git a/app/Entities/Equipment/ServerEntity.php b/app/Entities/Equipment/ServerEntity.php index a7d7d5d..1566025 100644 --- a/app/Entities/Equipment/ServerEntity.php +++ b/app/Entities/Equipment/ServerEntity.php @@ -17,7 +17,7 @@ class ServerEntity extends EquipmentEntity 'price' => 0, 'manufactur_at' => '', 'format_at' => '', - 'status' => STATUS['AVAILABLE'], + 'status' => '', ]; public function __construct(array|null $data = null) { diff --git a/app/Entities/Equipment/ServerPartEntity.php b/app/Entities/Equipment/ServerPartEntity.php index 847f759..b05fadb 100644 --- a/app/Entities/Equipment/ServerPartEntity.php +++ b/app/Entities/Equipment/ServerPartEntity.php @@ -21,15 +21,15 @@ class ServerPartEntity extends EquipmentEntity { parent::__construct($data); } - final public function getClientInfoUid(): int|null + public function getClientInfoUid(): int|null { return $this->attributes['clientinfo_uid'] ?? null; } - final public function getServiceInfoUid(): int|null + public function getServiceInfoUid(): int|null { return $this->attributes['serviceinfo_uid'] ?? null; } - final public function getServerInfoUid(): int|null + public function getServerInfoUid(): int|null { return $this->attributes['serverinfo_uid'] ?? null; } @@ -48,26 +48,26 @@ class ServerPartEntity extends EquipmentEntity } public function getType(): string { - return $this->attributes['type']; + return $this->attributes['type'] ?? ""; } public function getBilling(): string { - return $this->attributes['billing']; + return $this->attributes['billing'] ?? ""; } - public function getBillingAt(): ?string + public function getBillingAt(): string { - return $this->attributes['billing_at']; + return $this->attributes['billing_at'] ?? ""; } public function getCnt(): int { - return $this->attributes['cnt']; + return $this->attributes['cnt'] ?? 0; } public function getAmount(): int { - return $this->attributes['amount']; + return $this->attributes['amount'] ?? 0; } - public function getExtra(): string|null + public function getExtra(): string { - return $this->attributes['extra']; + return $this->attributes['extra'] ?? ''; } } diff --git a/app/Entities/MylogEntity.php b/app/Entities/MylogEntity.php index 18f8e72..56be51e 100644 --- a/app/Entities/MylogEntity.php +++ b/app/Entities/MylogEntity.php @@ -10,7 +10,7 @@ class MylogEntity extends CommonEntity const TITLE = Model::TITLE; protected $attributes = [ 'title' => '', - 'status' => STATUS['AVAILABLE'], + 'status' => '', 'content' => '' ]; public function __construct(array|null $data = null) diff --git a/app/Entities/Part/CPUEntity.php b/app/Entities/Part/CPUEntity.php index 0a2ca31..09ee3ec 100644 --- a/app/Entities/Part/CPUEntity.php +++ b/app/Entities/Part/CPUEntity.php @@ -8,10 +8,15 @@ class CPUEntity extends PartEntity { const PK = CPUModel::PK; const TITLE = CPUModel::TITLE; + protected $attributes = [ + 'title' => '', + 'used' => 0, + 'price' => 0, + 'stock' => 0, + 'status' => '', + ]; public function __construct(array|null $data = null) { - $this->attributes['used'] = 0; - $this->attributes['stock'] = 0; parent::__construct($data); } //기본기능 diff --git a/app/Entities/Part/CSEntity.php b/app/Entities/Part/CSEntity.php index 2bb8b16..d6ad15a 100644 --- a/app/Entities/Part/CSEntity.php +++ b/app/Entities/Part/CSEntity.php @@ -8,12 +8,16 @@ class CSEntity extends PartEntity { const PK = CSModel::PK; const TITLE = CSModel::TITLE; + protected $attributes = [ + 'type' => '', + 'ip' => '', + 'accountid' => '', + 'domain' => '', + 'price' => 0, + 'status' => '', + ]; public function __construct(array|null $data = null) { - $this->attributes['type'] = ''; - $this->attributes['ip'] = ''; - $this->attributes['accountid'] = ''; - $this->attributes['domain'] = ''; parent::__construct($data); } //기본기능 diff --git a/app/Entities/Part/DISKEntity.php b/app/Entities/Part/DISKEntity.php index 23ddaa4..6e92dce 100644 --- a/app/Entities/Part/DISKEntity.php +++ b/app/Entities/Part/DISKEntity.php @@ -8,11 +8,16 @@ class DISKEntity extends PartEntity { const PK = DISKModel::PK; const TITLE = DISKModel::TITLE; + protected $attributes = [ + 'title' => '', + 'used' => 0, + 'price' => 0, + 'stock' => 0, + 'format' => 0, + 'status' => '', + ]; public function __construct(array|null $data = null) { - $this->attributes['used'] = 0; - $this->attributes['stock'] = 0; - $this->attributes['format'] = ''; parent::__construct($data); } //기본기능 diff --git a/app/Entities/Part/IPEntity.php b/app/Entities/Part/IPEntity.php index 71122b8..fb52688 100644 --- a/app/Entities/Part/IPEntity.php +++ b/app/Entities/Part/IPEntity.php @@ -8,9 +8,16 @@ class IPEntity extends PartEntity { const PK = IPModel::PK; const TITLE = IPModel::TITLE; + protected $attributes = [ + 'title' => '', + 'used' => 0, + 'price' => 0, + 'stock' => 0, + 'ip' => '', + 'status' => '', + ]; public function __construct(array|null $data = null) { - $this->attributes['ip'] = ''; parent::__construct($data); } public function getLineInfoUID(): int|null diff --git a/app/Entities/Part/PartEntity.php b/app/Entities/Part/PartEntity.php index fa0f92d..d1f9ec7 100644 --- a/app/Entities/Part/PartEntity.php +++ b/app/Entities/Part/PartEntity.php @@ -6,11 +6,6 @@ use App\Entities\CommonEntity; abstract class PartEntity extends CommonEntity { - protected $attributes = [ - 'title' => '', - 'price' => 0, - 'status' => STATUS['AVAILABLE'], - ]; public function __construct(array|null $data = null) { parent::__construct($data); diff --git a/app/Entities/Part/RAMEntity.php b/app/Entities/Part/RAMEntity.php index df484c5..f0ca746 100644 --- a/app/Entities/Part/RAMEntity.php +++ b/app/Entities/Part/RAMEntity.php @@ -8,10 +8,15 @@ class RAMEntity extends PartEntity { const PK = RAMModel::PK; const TITLE = RAMModel::TITLE; + protected $attributes = [ + 'title' => '', + 'used' => 0, + 'price' => 0, + 'stock' => 0, + 'status' => '', + ]; public function __construct(array|null $data = null) { - $this->attributes['used'] = 0; - $this->attributes['stock'] = 0; parent::__construct($data); } //기본기능 diff --git a/app/Entities/Part/SOFTWAREEntity.php b/app/Entities/Part/SOFTWAREEntity.php index 51b693c..af0b2d4 100644 --- a/app/Entities/Part/SOFTWAREEntity.php +++ b/app/Entities/Part/SOFTWAREEntity.php @@ -8,10 +8,15 @@ class SOFTWAREEntity extends PartEntity { const PK = SOFTWAREModel::PK; const TITLE = SOFTWAREModel::TITLE; + protected $attributes = [ + 'title' => '', + 'used' => 0, + 'price' => 0, + 'stock' => 0, + 'status' => '', + ]; public function __construct(array|null $data = null) { - $this->attributes['used'] = 0; - $this->attributes['stock'] = 0; parent::__construct($data); } //기본기능 diff --git a/app/Entities/Part/SWITCHEntity.php b/app/Entities/Part/SWITCHEntity.php index 0a43fbe..adee6b4 100644 --- a/app/Entities/Part/SWITCHEntity.php +++ b/app/Entities/Part/SWITCHEntity.php @@ -8,6 +8,11 @@ class SWITCHEntity extends PartEntity { const PK = SWITCHModel::PK; const TITLE = SWITCHModel::TITLE; + protected $attributes = [ + 'code' => 0, + 'price' => 0, + 'status' => '', + ]; public function __construct(array|null $data = null) { $this->attributes['code'] = ''; diff --git a/app/Entities/PaymentEntity.php b/app/Entities/PaymentEntity.php index 4765f1b..dd06ee3 100644 --- a/app/Entities/PaymentEntity.php +++ b/app/Entities/PaymentEntity.php @@ -16,7 +16,7 @@ class PaymentEntity extends CommonEntity 'billing_at' => "", 'billing_month' => 0, 'pay' => "", - 'status' => STATUS['AVAILABLE'], + 'status' => '', 'content' => '' ]; public function __construct(array|null $data = null) diff --git a/app/Entities/UserEntity.php b/app/Entities/UserEntity.php index 603d9cb..fbdf38d 100644 --- a/app/Entities/UserEntity.php +++ b/app/Entities/UserEntity.php @@ -22,7 +22,7 @@ class UserEntity extends CommonEntity 'email' => "", 'mobile' => '', 'role' => "", - 'status' => STATUS['AVAILABLE'], + 'status' => '', ]; public function __construct(array|null $data = null) { diff --git a/app/Helpers/Customer/ClientHelper.php b/app/Helpers/Customer/ClientHelper.php index 37b3de9..419586b 100644 --- a/app/Helpers/Customer/ClientHelper.php +++ b/app/Helpers/Customer/ClientHelper.php @@ -54,39 +54,39 @@ class ClientHelper extends CustomerHelper break; case 'account_balance': $value = form_label( - number_format(intval($value)) . "원", - 'index', + number_format($value) . "원", + $field, [ - "data-src" => "/admin/customer/wallet/account?clientinfo_uid={$viewDatas['entity']->getPK()}", + "data-src" => "/admin/customer/wallet/account?clientinfo_uid={$viewDatas['entity']->getPK()}&ActionTemplate=popup", "data-bs-toggle" => "modal", "data-bs-target" => "#modal_action_form", - "class" => "btn btn-sm form-label-sm text-primary", + "class" => "text-primary", ...$extras, ] ); break; case 'coupon_balance': $value = form_label( - number_format(intval($value)) . "개", - 'index', + number_format($value) . "개", + $field, [ - "data-src" => "/admin/customer/wallet/coupon?clientinfo_uid={$viewDatas['entity']->getPK()}", + "data-src" => "/admin/customer/wallet/coupon?clientinfo_uid={$viewDatas['entity']->getPK()}&ActionTemplate=popup", "data-bs-toggle" => "modal", "data-bs-target" => "#modal_action_form", - "class" => "btn btn-sm form-label-sm text-primary", + "class" => "text-primary", ...$extras, ] ); break; case 'point_balance': $value = form_label( - number_format(intval($value)) . "원", - 'index', + number_format($value) . "점", + $field, [ - "data-src" => "/admin/customer/wallet/point?clientinfo_uid={$viewDatas['entity']->getPK()}", + "data-src" => "/admin/customer/wallet/point?clientinfo_uid={$viewDatas['entity']->getPK()}&ActionTemplate=popup", "data-bs-toggle" => "modal", "data-bs-target" => "#modal_action_form", - "class" => "btn btn-sm form-label-sm text-primary", + "class" => "text-primary", ...$extras, ] );