-
This is an example of a permissions set I'm trying to store in the app: return new class extends SettingsMigration
{
public function up(): void
{
{...}
$this->migrator->add('Admin::Sidebar::Items::customers.display_name', 'Clientes');
$this->migrator->add('Admin::Sidebar::Items::customers.required_permission', 'viewAny_customer');
$this->migrator->add('Admin::Sidebar::Items::customers.action', 'customer');
$this->migrator->add('Admin::Sidebar::Items::customers.icon1', 'pi-address-book');
$this->migrator->add('Admin::Sidebar::Items::dump-reasons.display_name', 'Motivos de Abandono');
$this->migrator->add('Admin::Sidebar::Items::dump-reasons.required_permission', 'viewAny_dump_reason');
$this->migrator->add('Admin::Sidebar::Items::dump-reasons.action', 'dump-reason');
$this->migrator->add('Admin::Sidebar::Items::dump-reasons.icon1', 'pi-delete-left');
$this->migrator->add('Admin::Sidebar::Items::permission_roles.display_name', 'Permisos <-> Roles');
$this->migrator->add('Admin::Sidebar::Items::permission_roles.required_permission', 'viewAny_permission');
$this->migrator->add('Admin::Sidebar::Items::permission_roles.action', 'permission-role');
$this->migrator->add('Admin::Sidebar::Items::permission_roles.icon1', 'pi-file-check');
$this->migrator->add('Admin::Sidebar::Items::permission_roles.icon2', 'pi-sliders-h');
{...}
}
}; Then, in the AdminSitebarItems class I'd like to get all the class AdminSidebarItems extends Settings
{
public string $display_name;
public string $required_permission;
public string $action;
public string $icon1;
public ?string $icon2;
public static function group(): string
{
return 'Admin::Sidebar::Items::*';
}
} But this approach fails because of two reasons:
Any ideas on how to fix it? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
Ok, I've solved the last part of the nullable |
Beta Was this translation helpful? Give feedback.
-
Well, I guess I answered myself all the questions. Finally (and I didn't know values field where JSON type) I found a way to keep a single group and create all value names and payload together: return new class extends SettingsMigration
{
public function up(): void
{
{...}
$this->migrator->inGroup('Admin::Sidebar::Items', function (SettingsBlueprint $blueprint) {
$blueprint->add('customers', [
'module_name' => 'customers',
'display_name' => 'Clientes',
'required_permission' => 'viewAny_customer',
'action' => 'customer',
'icon1' => 'pi-address-book',
]);
$blueprint->add('dump_reason', [
'module_name' => 'dump_reason',
'display_name' => 'Motivos de Abandono',
'required_permission' => 'viewAny_dump_reason',
'action' => 'dump-reason',
'icon1' => 'pi-delete-left',
]);
$blueprint->add('permission_roles', [
'module_name' => 'permission_roles',
'display_name' => 'Permisos <-> Roles',
'required_permission' => 'viewAny_permission',
'action' => 'permission-role',
'icon1' => 'pi-file-check',
'icon2' => 'pi-sliders-h',
]);
{...}
}
}; And then in the settings class I can use all the names as properties, since settings are static it doesn't matter (by now) that these are burnt into the class: class AdminSidebarItems extends Settings
{
public array $customers;
public array $dump_reason;
public array $modules;
public array $exhibit_screens;
public array $service_screens;
public array $break_reasons;
public array $permissions;
public array $permission_roles;
public array $policies;
public array $roles;
public array $services;
public array $users;
public array $zones;
public static function group(): string
{
return 'Admin::Sidebar::Items';
}
} |
Beta Was this translation helpful? Give feedback.
Well, I guess I answered myself all the questions. Finally (and I didn't know values field where JSON type) I found a way to keep a single group and create all value names and payload together: