कॉन्फ़िगरेशन फ़ॉर्मों के साथ काम
फॉर्म के संदर्भ में $config का उपयोग
आप कॉन्फ़िगरेशन फ़ॉर्म का उपयोग करके यह जान सकते हैं कि $config उपयोगकर्ता द्वारा दर्ज किए गए डेटा को कैसे प्राप्त कर सकता है और {module}.settings.yml फ़ाइल में डेटा को कैसे बदल सकता है। यहाँ कोड है, जो फॉर्म में $config ऑब्जेक्ट की घोषणा करने के लिए उपयोग किया जाता है, जिसे आप फॉर्म सेटिंग्स की PHP फ़ाइल में पा सकते हैं।
Drupal Core का ConfigFactory क्लास कॉन्फ़िगरेशन डेटा को पढ़ने और लिखने का तरीका है, और इसे निर्दिष्ट कॉन्फ़िगरेशन फ़ाइल की सामग्री के आधार पर Config ऑब्जेक्ट का एक उदाहरण बनाने के लिए उपयोग किया जाता है। नया Config ऑब्जेक्ट तब इन डाटा पर CRUD ऑपरेशन्स करने के लिए इस्तेमाल किया जा सकता है।

फॉर्म की परिभाषा का उदाहरण (स्थित है example/src/Form/exampleSettingsForm.php में):
namespace Drupal\example\Form;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
/**
* इस साइट के लिए उदाहरण सेटिंग्स कॉन्फ़िगर करें।
*/
class ExampleSettingsForm extends ConfigFormBase {
/**
* कॉन्फ़िग सेटिंग्स।
*
* @var string
*/
const SETTINGS = 'example.settings';
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'example_admin_settings';
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return [
static::SETTINGS,
];
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this->config(static::SETTINGS);
$form['example_thing'] = [
'#type' => 'textfield',
'#title' => $this->t('Things'),
'#default_value' => $config->get('example_thing'),
];
$form['other_things'] = [
'#type' => 'textfield',
'#title' => $this->t('Other things'),
'#default_value' => $config->get('other_things'),
];
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
// कॉन्फ़िगरेशन प्राप्त करें।
$this->configFactory->getEditable(static::SETTINGS)
// सबमिट की गई कॉन्फ़िगरेशन सेटिंग सेट करें।
->set('example_thing', $form_state->getValue('example_thing'))
// आप कई कॉन्फ़िगरेशन एक साथ सेट कर सकते हैं,
// कई बार set() कॉल करके।
->set('other_things', $form_state->getValue('other_things'))
->save();
parent::submitForm($form, $form_state);
}
}
राउटिंग फ़ाइल (example.routing.yml):
example.settings:
path: '/admin/config/example/settings'
defaults:
_form: '\Drupal\example\Form\ExampleSettingsForm'
_title: 'example'
requirements:
_permission: 'administer site configuration'
Config ऑब्जेक्ट का उपयोग करके, आप फॉर्म से एकत्र किए गए अपने डाटा को सरल बना सकते हैं। ऊपर दिए गए कोड को फॉर्म सेटिंग्स फ़ाइल में शामिल करने के बाद, आप फॉर्म डाटा को {module}.settings.yml में स्टोर कर पाएंगे।
कोई भी क्लास जो ConfigFormBase को एक्सटेंड करती है, उसे getEditableConfigNames मेथड को लागू करना चाहिए और उन कॉन्फ़िगरेशन फ़ील्ड नामों की एक array लौटानी चाहिए जिन्हें वह एडिट करता है।