Կոնֆիգուրացիայի պահպանումը 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 ֆայլի կարգավորումները բավարարում են ձեզ, ապա կարող եք դրանք պատճենել ձեր մոդուլ կամ թեմա։