Skip to content
Snippets Groups Projects

Issue #3519101: Use the parent's submitForm directly

1 file
+ 12
27
Compare changes
  • Side-by-side
  • Inline
+ 12
27
@@ -104,16 +104,16 @@ abstract class AutoConfigFormBase extends ConfigFormBase {
switch ($definition['type']) {
case 'string':
$form[$key] = $this->buildStringElement($definition, $default_value, $overridden_value, $original_value);
$form[$key] = $this->buildStringElement($key, $definition, $default_value, $overridden_value, $original_value);
break;
case 'boolean':
$form[$key] = $this->buildBooleanElement($definition, $default_value, $overridden_value, $original_value);
$form[$key] = $this->buildBooleanElement($key, $definition, $default_value, $overridden_value, $original_value);
break;
case 'float':
case 'integer':
$form[$key] = $this->buildNumberElement($definition, $default_value, $overridden_value, $original_value);
$form[$key] = $this->buildNumberElement($key, $definition, $default_value, $overridden_value, $original_value);
break;
default:
@@ -121,59 +121,43 @@ abstract class AutoConfigFormBase extends ConfigFormBase {
}
}
$form['actions'] = $this->buildActionsElement();
$form['#theme'] = 'system_config_form';
return $form;
}
/**
* {@inheritDoc}
*
* @throws \Drupal\Core\Config\ConfigValueException
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$config = $this->getEditableConfig();
foreach ($this->getSchemaMapping() as $key => $definition) {
$config->set($key, $form_state->getValue($key));
}
$config->save();
parent::submitForm($form, $form_state);
return parent::buildForm($form, $form_state);
}
/**
* Build a form element for a 'string' config value.
*/
protected function buildStringElement(array $definition, $default_value, $overridden_value, $original_value): array {
protected function buildStringElement($key, array $definition, $default_value, $overridden_value, $original_value): array {
return [
'#type' => 'textfield',
...$this->getCommonElementAttributes($definition, $default_value, $overridden_value, $original_value),
...$this->getCommonElementAttributes($key, $definition, $default_value, $overridden_value, $original_value),
];
}
/**
* Build a form element for a 'boolean' config value.
*/
protected function buildBooleanElement(array $definition, $default_value, $overridden_value, $original_value): array {
protected function buildBooleanElement($key, array $definition, $default_value, $overridden_value, $original_value): array {
return [
'#type' => 'checkbox',
...$this->getCommonElementAttributes($definition, $default_value, $overridden_value, $original_value),
...$this->getCommonElementAttributes($key, $definition, $default_value, $overridden_value, $original_value),
];
}
/**
* Build a form element for a 'float' or 'integer' config value.
*/
protected function buildNumberElement(array $definition, $default_value, $overridden_value, $original_value): array {
protected function buildNumberElement($key, array $definition, $default_value, $overridden_value, $original_value): array {
return [
'#type' => 'number',
...$this->getCommonElementAttributes($definition, $default_value, $overridden_value, $original_value),
...$this->getCommonElementAttributes($key, $definition, $default_value, $overridden_value, $original_value),
];
}
/**
* Get attributes that are common to all form elements.
*/
protected function getCommonElementAttributes(array $definition, $default_value, $overridden_value, $original_value): array {
protected function getCommonElementAttributes(string $key, array $definition, $default_value, $overridden_value, $original_value): array {
return [
'#title' => $definition['title'] ?? NULL,
'#default_value' => $default_value,
@@ -181,6 +165,7 @@ abstract class AutoConfigFormBase extends ConfigFormBase {
$definition['label'] ?? NULL,
$this->getOverriddenMessage($overridden_value, $original_value),
])),
'#config_target' => $this->getSchemaKey() . ':' . $key,
];
}
Loading