W Magento2, w prosty sposób można dodać do panelu admina konfigurację własnego modułu. Polega to głównie na przygotowaniu pliku system.xml z opisem kontrolek formularza. Dane z tego pliku zapisywane są w tabeli core_config_data. Mechanizm zapisu i odczytu obsługuje Magento, tak więc nie musimy tego kodować. Formularz z ustawieniami pojawi się w sekcji menu: SKLEPY -> Ustawienia -> Konfiguracja (STORES -> Settings -> Configuration).

W celach edukacyjnych zbudujemy formularz jak na powyższym obrazku, czyli z typowymi polami: lista rozwijana, pole tekstowe, obszar tekstowy i obrazek.

Struktura plików i katalogów w ostatecznej odsłonie będzie miała postać, jak na obrazku poniżej. Jak widać jest to moduł w katalogu Geek, o nazwie MyModule:

struktura plików i katalogów system xml magento2

1. NOWY MODUŁ

Na początek musimy utworzyć podstawowy moduł. W tym celu dodaj dwa pliki:

/app/code/Geek/MyModule/etc/module.xml

/app/code/Geek/MyModule/registration.php

2. KONFIGURACJA PLIKU SYSTEM.XML

A teraz sedno. Tworzymy plik system.xml z konfiguracją menu i formularza. Pod listingiem zamieściłem wytłumaczenie poszczególnych tagów i ich atrybutów.

/app/code/Geek/MyModule/etc/adminhtml/system.xml

1. Element <tab></tab> – dotyczy zakładki w menu.

Atrybuty:

  • id – identyfikator zakładki, który będzie powiązany z <section>, poprzez element <tab></tab>,
  • translate – wskazuje element do tłumaczenia: label,
  • sortOrder – kolejność zakładki w menu.

2. Element <section></section> – zawartość sekcji strony z formularzem.

Atrybuty:

  • id – identyfikator sekcji,
  • translate – tłumaczenie elementu label,
  • sortOrder – kolejność sekcji,
  • showInDefault, showInWebsite, showInStore – dotyczy widoczności w poszczególnych widokach strony: Default, Website, Store:

2.1. Element <class></class> – nazwa klasy stylów CSS.

2.2. Element <label>My module</label> – nagłówek podsekcji menu.

2.3. Element <tab>geek</tab> – identyfikator zakładki zgodny z <tab id=”geek”></tab>.

2.4. Element <resource>Geek_MyModule::module_config</resource> – plik konfiguracyjny ACL, w którym definiuje się role dla użytkownika (administratora). Role dostępne są w: Menu-> System -> User Roles -> {User} -> Role Resources.

2.5. Element <group></group> – grupuje kontrolki formularza. Atrybuty są identyczne jak w <section>, więc pomijam ich opis.

2.5.1. Element <label>Configuration</label> – etykieta, nagłówek nad formularzem z kontrolkami.

2.5.2. Element <field type=”select”></field> – lista rozwijana:

  • <label>Enable</label> – podpis pola,
  • <source_model>Magento\Config\Model\Config\Source\Yesno</source_model> – źródło danych dla listy rozwijanej, pobierane z gotowej klasy Yesno.

Dane można pobrać również z własnej klasy modelu, jak w drugim przykładzie:

Źródło: Geek\MyModule\Model\Config\Source\Custom.php:

2.5.3. Element <field type=”text”></field> – pole tekstowe:

Tag <comment>Prompt</comment> pozwala wprowadzić pod kontrolką formularza krótki tekst z podpowiedzią, itp.

2.5.4. Element <field type=”textarea”></field> – obszar tekstowy:

2.5.5. Element <field type=”image”></field> – pole z obrazkiem:

Jak już zapewne domyślasz się, element backend_model – wskazuje adres do klasy modelu obrazka; natomiast w upload_dir – wskazujemy ścieżkę do katalogu, w którym zapisywane będą obrazki.

3. KONFIGURACJA PLIKU CONFIG.XML

Plik config.xml pozwala ustawić m.in. wartości domyślne w polach formularza.

app/code/Geek/MyModule/etc/config.xml

W powyższym przykładzie wartości domyślne ustawione są dla dwóch pól z pliku system.xml o identyfikatorach id=”enable” i id=”custom_textarea”. Pola te znajdują się w sekcji id=”mymodule”, stąd też znacznik: <mymodule></mymodule> w config.xml.


I to już wszystko w tym temacie. Jak widać, tworzenie konfiguracji systemowej nie jest trudne i sprowadza się zaledwie do prostych zapisów w plikach xml. Pozostałe akcje wykonuje za nas Magento.

Zobacz również: „ODCZYT KONFIGURACJI SYSTEMOWEJ NA STRONIE Z WIDOKIEM”