# Ustawienia
UWAGA
Ustawienia aplikacji wczytywane są z cache, dlatego w przypadku skonfigurowania nowego ustawienia w pliku settings.php należy skasować pozycję cache, której kluczem jest public_settings_version lub zapisać ustawienia w panelu administracyjnym, co wiąże się z automatycznym nadpisaniem jej wartości.
# Typy ustawień
Typy ustawień zdefiniowane są w pliku Modules/Settings/Enums/SettingType.php.
public const TEXT = 'text';
public const NUMBER = 'number';
public const TEXTAREA = 'textarea';
public const EDITOR = 'editor';
public const SELECT = 'select';
public const CHECKBOX = 'checkbox';
public const FILE = 'file';
public const TIME = 'time';
Na podstawie typu wyświetlany jest odpowiedni widok edycji pola w panelu administracyjnym.
# Definiowanie ustawień
# Grupy ustawień
Każde zagnieżdżenie w pliku settings.php, stanowi podgrupę ustawień.
Dzięki temu możemy pobrać ustawienia z określonej grupy, przesyłając w żądaniu parametr (query string) group.
# Definiowanie ustawień aplikacji
W pliku config/settings.php.
'general' => [ // grupa ustawień
'app_name' => [ // nazwa ustawienia
'description' => 'core::settings.descriptions.app_name',
'type' => SettingType::TEXT,
'translatable' => false,
'default' => env('APP_NAME'),
'public' => true,
],
];
# Ustawienie typu select
Opcje definiujemy jako tablicę asocjacyjną gdzie klucz to wartość, która zostanie zapisana do bazy danych, a wartość to etykieta opcji. Żeby włączyć tryb dodawania nowych wartości z poza opcji trzeba skorzystać z klucza new-value-mode, który odpowiada takim samym propsom (opens new window) w komponencie QSelect na froncie.
'vat_rates' => [
'description' => 'core::settings.descriptions.vat_rates',
'type' => SettingType::SELECT,
'options' => [
'23' => 'core::settings.descriptions.23vat',
'10' => 'core::settings.descriptions.10vat',
'0' => 'core::settings.descriptions.0vat',
],
'new-value-mode' => 'add-unique',
'default' => ['23'],
'multiple' => true,
'public' => true,
],
# Definiowanie ustawień modułów
Ustawienia modułu należy zdefiniować w pliku Modules/{Name}/config/settings.php.
TIP
Nazwa modułu stanowi nową grupę ustawień.
# Tłumaczalne ustawienia
Ustawienia mogą przyjmować różne wartości dla poszczególnych języków.
W takim przypadku należy ustawić wartości pozycji translatable na true oraz ustawić domyślne wartości dla poszczególnych języków w default.
'app_name' => [
'description' => 'Application name',
'type' => SettingType::TEXT,
'translatable' => true,
'default' => [
'pl' => 'Nazwa aplikacji',
'en' => 'Application name',
],
'public' => true,
],
TIP
Jeśli ustawienie jest tłumaczalne, wciąż domyślnie można przypisać wartość skalarną (zamiast tablicy) lub null, która będzie ustawiona dla każdego języka.