Drupal 8 में कॉन्फ़िगरेशन का संग्रहण
डिफ़ॉल्ट रूप से Drupal 8 में कॉन्फ़िगरेशन की जानकारी डेटाबेस में संग्रहीत होती है।
कॉन्फ़िगरेशन फ़ाइल फ़ॉर्मेट (YAML)
एक्सटेंशन (मॉड्यूल, थीम और प्रोफ़ाइल) YAML फ़ाइलों में कॉन्फ़िगरेशन डेटा प्रदान करते हैं।
यहाँ एक कॉन्फ़िगरेशन फ़ाइल का उदाहरण है:
some_string: 'Woo kittens!' some_int: 42 some_bool: true
कॉन्फ़िगरेशन nested भी हो सकता है। उदाहरण:
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
कॉन्फ़िगरेशन स्कीमा
कॉन्फ़िगरेशन का एक स्कीमा होता है। इसका विवरण कॉन्फ़िगरेशन स्कीमा/मेटाडेटा डॉक्यूमेंटेशन में दिया गया है।
एक्सटेंशन के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन
एक्सटेंशन (मॉड्यूल, थीम या प्रोफ़ाइल), जो अपनी कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान प्रदान करता है, उसे अपनी config/install सब-डायरेक्टरी में YAML फ़ाइलों में यह कॉन्फ़िगरेशन रखना चाहिए।
यदि एक्सटेंशन को केवल बेसिक simple configuration पैरामीटर्स चाहिए, तो सभी डिफ़ॉल्ट सेटिंग्स को एक ही फ़ाइल modulename.settings.yml में रखा जा सकता है। अधिक जटिल सेटिंग्स के लिए कॉन्फ़िगरेशन को कई फ़ाइलों में विभाजित किया जा सकता है। प्रत्येक कॉन्फ़िगरेशन ऑब्जेक्ट को अपनी YAML फ़ाइल में होना चाहिए और यदि मॉड्यूल अपनी कॉन्फ़िगरेशन लिखता है तो इन्हें उत्पन्न किया जाएगा (इन्हें मैन्युअली लिखने की कोशिश न करें)।
यदि आपको ऐसे कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट मान प्रदान करने की आवश्यकता है जो dynamic मान की मांग करता है (जो modulename.settings.yml में सेट नहीं किया जा सकता), तो इसे hook_install() में करें। उदाहरण:
/**
* Implements hook_install().
*/
function modulename_install() {
// ऐसे कॉन्फ़िग के लिए डिफ़ॉल्ट मान सेट करें जिन्हें dynamic मान चाहिए।
\Drupal::configFactory()->getEditable('modulename.settings')
->set('default_from_address', \Drupal::config('system.site')->get('mail'))
->save();
}
एक्सटेंशन के लिए वैकल्पिक कॉन्फ़िगरेशन
एक्सटेंशन (मॉड्यूल या थीम) के वैकल्पिक कॉन्फ़िगरेशन तत्व config/optional सब-डायरेक्टरी में संग्रहीत होते हैं।
ये कॉन्फ़िगरेशन तत्व किसी ऐसी dependency पर आधारित होते हैं, जिस पर एक्सटेंशन सीधे निर्भर नहीं करता, इसलिए ये केवल तभी इंस्टॉल होते हैं जब उनकी सभी dependencies पूरी हों।
उदाहरण: यदि मॉड्यूल A में वैकल्पिक कॉन्फ़िगरेशन है जिसके लिए मॉड्यूल B की आवश्यकता है, और यदि पहले मॉड्यूल A इंस्टॉल होता है और बाद में मॉड्यूल B, तो उस समय मॉड्यूल A की config/optional डायरेक्टरी को dependencies के लिए स्कैन किया जाएगा और कॉन्फ़िगरेशन तभी इंस्टॉल होगा। यदि मॉड्यूल B कभी इंस्टॉल नहीं होता, तो अतिरिक्त कॉन्फ़िगरेशन भी इंस्टॉल नहीं होगा।
Active कॉन्फ़िगरेशन स्टोरेज
डिफ़ॉल्ट रूप से Drupal 8 active configuration को डेटाबेस में सेव करता है ताकि प्रदर्शन (performance) और scalability बेहतर हो सके। देखें «डिफ़ॉल्ट Active कॉन्फ़िगरेशन» जिसे फ़ाइल स्टोरेज से DB स्टोरेज में बदला गया है।
YAML से डेटाबेस में कॉन्फ़िगरेशन अपडेट करना
डेवलपमेंट के दौरान यदि आपको YAML से डेटाबेस में कॉन्फ़िगरेशन अपडेट करना हो, तो आप drush config-import (cim) कमांड का उपयोग कर सकते हैं।
आप settings.php में परिभाषित सक्रिय कॉन्फ़िगरेशन फ़ोल्डर (उदाहरण: sites/default/files/config_6dh1U_2YKLGrrh5oLxAgobbledygook/sync) में YAML फ़ाइल एडिट करते हैं, और फिर drush cim चलाते हैं। कैश साफ़ करें (drush cr), ताकि बदलाव दिखाई दें।
यदि आप YAML फ़ाइल में सेटिंग्स से संतुष्ट हैं, तो उन्हें अपने मॉड्यूल या थीम में कॉपी कर सकते हैं।