# 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.