Definisanje i korišćenje sopstvene konfiguracije u Drupal 8
Glavna tema: definisanje sopstvene konfiguracije
Možete uključiti podrazumevanu konfiguraciju u svoj modul, zasnovanu na funkcionalnostima drugih modula (tipovi nodova, prikazi, polja, tekstualni formati itd.).
Na primer, modul za nodove pruža konfiguraciju tipa nodova, tako da u svom modulu možete podesiti podrazumevani tip nodova koji može biti isporučen sa vašim modulom.
Moguće je da želite definisati konfiguraciju za svoje sopstvene plugine, entitete i podešavanja koja, zauzvrat, mogu koristiti i drugi moduli, isto kao što koristite konfiguraciju tipa sadržaja nodova. Drupal 8 olakšava definisanje vašeg dela konfiguracije.
Konfiguracioni fajl
Konfiguracioni fajlovi za vaš modul nalaze se u poddirektorijumu config/install unutar vašeg modula. Na primer, /modules/example/config/install/example.settings.yml, ako je vaš modul u /modules/example. Ovde možete smestiti konfiguracione fajlove svog modula koristeći YAML format.
Iako nije obavezno, preporučuje se da konfiguracione fajlove koje definišete za svoj modul imenujete sa prefiksom imena modula: na primer example.settings.yml za konfiguracione parametre. Nemojte nazivati fajl settings.yml ili system.settings.yml jer to može praviti konflikte sa fajlovima na drugim mestima. Ako ne budete sledili ovu konvenciju, Drush komande kao što je drush config:import mogu da budu zbunjene.
Ovo takođe omogućava da obezbedite konfiguraciju za druge komponente, na primer primer tipa nodova, uključujući podrazumevanu konfiguraciju u vaš modul, gde je konfiguracioni fajl bio node.type.example_mytype.yml, identifikujući konfiguracioni fajl koji će se tretirati kao tip nodova od strane modula nod.
Ime konfiguracionog fajla (bez ekstenzije .yml) naziva se i imenom konfiguracije u sistemu i na taj način možete pristupati konfiguraciji iz PHP API-ja.
Struktura konfiguracionog fajla
Konfiguracioni fajl treba da koristi YAML format. Možete strukturirati svoj konfiguracioni fajl prema potrebama, nema ograničenja osim formata YAML za strukturu. Na primer, ako vam treba parametar za prikaz nečega posebnog iz vašeg kontrolera stranice, fajl može sadržati ključ message sa string vrednošću:
message: 'Hello' langcode: 'en'
Preporučuje se da uključite kod jezika fajla pod ključem langcode. Ovo koristi sistem jezika da ponudi prevodiv tekst za prevod. Ključ langcode je rezervisan za ovu svrhu i ne treba ga koristiti na vrhu fajla za bilo šta drugo.
Za prevođenje konfiguracije treba imati instaliran module za prevođenje konfiguracije.
Da bi konfiguracija bila prevodiva, potrebno je dodati još dva fajla:
- /modules/example/config/schema/example.schema.yml
- /modules/example/example.config_translation.yml
Prvi definiše šemu korisničke konfiguracije. Definisaćemo example.settings kao config_object koji sadrži nekoliko polja. Svako polje ima tip: definicija osnovnog tipa određuje da li je polje prevodivo ili ne (vidi core.data_types.schema.yml). Na primer, path koji sadrži unutrašnju Drupal putanju nije prevodiv, dok je text prevodiv.
# /modules/example/config/schema/example.schema.yml example.settings: type: config_object label: 'Example config' mapping: message: type: text label: 'Message'
Drugi dodaje referencu u /admin/config/regional/config-translation u odgovarajuću formu za prevod:
# /modules/example/example.config_translation.yml example.admin.config: title: 'Example module' base_route_name: example.admin.config names: - example.settings
Po konvenciji ključ odgovara imenu osnovne rute: example.admin.config je ime rute ka administratorskoj konfiguracionoj formi vašeg modula. Imena navode sve konfiguracione ključeve koje forma uređuje, u ovom slučaju korisnička konfiguracija definisana u šemi iznad.
Fajl može sadržati složenije liste i parove ključ/vrednost u hijerarhijskoj strukturi. Pogledajte, na primer, fajl views.view.content.yml za primer konfiguracionog fajla sa malo kompleksnijom strukturom.
Prevođenje konfiguracije automatski dodaje tab „module translation“ u konfiguracionu formu modula, ali taj tab možda neće biti prikazan ako je to jedini dostupan tab. Da biste dodali podrazumevani tab za konfiguracionu formu, potrebno je dodati još jedan fajl example.links.task.yml. (Vidi Definisanje lokalnih zadataka definisanih modulom.)
# example.links.task.yml example.admin.config: route_name: example.admin.config title: Settings base_route: example.admin.config
Korišćenje konfiguracije
Drupal 8 dolazi sa PHP API-jem za čitanje i pisanje ove konfiguracije. Najjednostavniji način korišćenja je statički metod Drupal::config():
$config = \Drupal::config('example.settings'); // Ispisaće 'Hello'. print $config->get('message'); // Ispisaće 'en'. print $config->get('langcode');
Ako želite da izmenite konfiguraciju i ažurirate je novom vrednošću, možete koristiti metodu \Drupal::service('config.factory')->getEditable():
$config = \Drupal::service('config.factory')->getEditable('example.settings'); // Postavite i sačuvajte novu vrednost poruke. $config->set('message', 'Hi')->save(); // Sada će ispisati 'Hi'. print $config->get('message');
Pogledajte takođe
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.