Կոնֆիգուրացիայի պահպանումը Drupal 8-ում
Դեֆոլտով կոնֆիգուրացիայի մասին տեղեկությունները Drupal 8-ում պահվում են տվյալների բազայում։
Կոնֆիգուրացիայի ֆայլի ձևաչափը (YAML)
Ընդարձակումները (մոդուլներ, թեմաներ և պրոֆիլներ) տրամադրում են կոնֆիգուրացիոն տվյալներ YAML ֆայլերում։
Ահա կոնֆիգուրացիայի ֆայլի օրինակ՝
some_string: 'Woo kittens!' some_int: 42 some_bool: true
Կոնֆիգուրացիան կարող է նաև լինել ներդաշնակ։ Ահա օրինակ՝
name: thumbnail label: 'Thumbnail (100x100)' effects: 1cfec298-8620-4749-b100-ccb6c4500779: id: image_scale data: width: 100 height: 100 upscale: true weight: 0 uuid: 1cfec298-8620-4749-b100-ccb6c4500779
Կոնֆիգուրացիայի սխեմա
Կոնֆիգուրացիան ունի սխեմա, որը նկարագրված է կոնֆիգուրացիայի սխեմա/մետատվյալների մասին փաստաթղթերում։
Ընդարձակումների կոնֆիգուրացիայի դեֆոլտ արժեքներ
Ընդարձակումները (մոդուլ, թեմա կամ պրոֆիլ), որոնք տրամադրում են իրենց կոնֆիգուրացիայի դեֆոլտ արժեքներ, պետք է տեղադրեն դրանք YAML ֆայլերում իրենց config/install ենթաթղթակում։
Եթե ընդարձակմանը պետք են միայն պարզ կոնֆիգուրացիոն պարամետրեր, դեֆոլտ բոլոր պարամետրերը կարելի է տեղադրել մեկ modulename.settings.yml ֆայլում։ Ավելի բարդ պարամետրերի դեպքում կարելի է կոնֆիգուրացիան բաժանել մի քանի ֆայլերի։ Յուրաքանչյուր կոնֆիգուրացիայի օբյեկտ պետք է տեղադրվի իր սեփական YAML ֆայլում, և դրանք պետք է ավտոմատ սերնդվեն, երբ մոդուլը գրանցում է իր կոնֆիգուրացիան (մենաշնորհ մի փորձեք դրանք ձեռքով գրել)։
Եթե կոնֆիգուրացիայի դեֆոլտ արժեքները պահանջում են դինամիկ արժեքներ (որոնք, հետևաբար, չեն կարող տեղադրվել modulename.settings.yml-ում), դրանք պետք է սెట్ անել hook_install() ֆունկցիայում։ Օրինակ՝
/** * Implements hook_install(). */ function modulename_install() { // Դինամիկ արժեքների համար դեֆոլտ արժեքներ սետ անելը։ \Drupal::configFactory()->getEditable('modulename.settings') ->set('default_from_address', \Drupal::config('system.site')->get('mail')) ->save(); }
Ընդարձակումների չպարտադիր կոնֆիգուրացիան
Չպարտադիր կոնֆիգուրացիոն տարրերը ընդարձակումների (մոդուլների կամ թեմաների) համար պահվում են config/option ենթաթղթակում։
Սրանք կոնֆիգուրացիոն տարրեր են, որոնք կախված են ինչ-որ բանից, ինչը ընդարձակումն ինքներս բացահայտորեն կախված չէ, ուստի դրանք տեղադրվում են միայն բոլոր իրենց կախվածությունների առկայության դեպքում։
Օրինակ, եթե մոդուլ A-ն ունի չպարտադիր կոնֆիգուրացիա, որը պահանջում է մոդուլ B, բայց նախ տեղադրվում է մոդուլ A-ն, ապա որոշ ժամանակ անց B-ն, ապա config/option ենթաթղթակը մոդուլ A-ի համար ստուգվելու է նորահայտ կախվածությունների համար, և այդ ժամանակ կտեղադրվի կոնֆիգուրացիան։ Եթե B-ն երբեք չի տեղադրվի, ապա լրացուցիչ կոնֆիգուրացիան նույնպես չի տեղադրվի։
Ակտիվ կոնֆիգուրացիայի պահոց
Դեֆոլտով Drupal 8-ում ակտիվ կոնֆիգուրացիան պահվում է տվյալների բազայում՝ կատարողականությունն ու մասշտաբելիությունը բարձրացնելու համար։ Ավելին կարդացեք «Դեֆոլտ ակտիվ կոնֆիգուրացիան փոխվել է ֆայլային պահոցից տվյալների բազայի պահոցի» մասին հոդվածում։
Կոնֆիգուրացիայի թարմացում YAML-ից տվյալների բազա
Եթե զարգացումների ընթացքում պետք է թարմացնեք կոնֆիգուրացիան YAML ֆայլերից տվյալների բազա, կարող եք օգտագործել drush config-import (cim) հրամանը։
Խմբագրեք կոնֆիգուրացիայի YAML ֆայլը ակտիվ կոնֆիգուրացիայի թղթապանակում (ինչպես սահմանված է settings.php-ում, օրինակ՝ sites/default/files/config_6dh1U_2YKLGrrh5oLxAgobbledygook/sync), ապա գործարկեք drush cim։ Очистите кешը (drush cr), чтобы увидеть изменения.
Եթե ձեր YAML ֆայլի կարգավորումները բավարարում են ձեզ, ապա կարող եք դրանք պատճենել ձեր մոդուլ կամ թեմա։