概念
- Configuration management
提供一个集中的地方来存储configuration数据,可以在多个环境建导入导出配置信息。 - Config Object
是configuration的一个实例。 - Configuration form
是一个特殊的form,用来帮助存储configuration数据到数据库或文件。
其他理解
- enable module的时候,config/install/module_name.settings.yml中定义的数据会被导入到数据库中,
在这之后,如果db中configuration数据发生变化的话,可以使用export/import在各个环境间导出/导入configuration数据。
- config/install/config_form_example.settings.yml中定义的是实际操作的字段键值对,最后都会存储到db config表中。
- config/schema/config_form_example.schema.yml中定义的是实际操作的字段的定义。
Configuration forms最小化实现
- config_form_example.info.yml
config/install/config_form_example.settings.yml
1email_address: form@examples.comsrc/Form/ConfigFormExampleConfigForm.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546/*** {@inheritdoc}.*/public function getFormId() {return 'config_form_example_form';}/*** {@inheritdoc}.*/public function buildForm(array $form, FormStateInterface $form_state) {$form = parent::buildForm($form, $form_state);$config = $this->config('config_form_example.settings');$form['email'] = ['#type' => 'email','#title' => $this->t('Your .com email address.'),'#default_value' => $config->get('email_address'),];return $form;}/*** {@inheritdoc}*/public function validateForm(array &$form, FormStateInterface $form_state) {if (strpos($form_state->getValue('email'), '.com') === FALSE ) {$form_state->setErrorByName('email', $this->t('This is not a .com email address.'));}}/*** {@inheritdoc}*/public function submitForm(array &$form, FormStateInterface $form_state) {$config = $this->config('config_form_example.settings');$config->set('email_address', $form_state->getValue('email'));$config->save();return parent::submitForm($form, $form_state);}/*** {@inheritdoc}*/protected function getEditableConfigNames() {return ['config_form_example.settings'];}config_form_example.routing.yml
- config/schema/config_form_example.schema.yml (optional)