Newer
Older
<?php
/**
* @file
Angie Byron
committed
* Contains \Drupal\Core\Form\ConfigFormBase.
Angie Byron
committed
namespace Drupal\Core\Form;
Angie Byron
committed
use Drupal\Core\Config\ConfigFactory;
Alex Pott
committed
use Drupal\Core\Form\FormBase;
Angie Byron
committed
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Base class for implementing system configuration forms.
*/
Angie Byron
committed
abstract class ConfigFormBase extends FormBase {
Angie Byron
committed
/**
* Stores the configuration factory.
*
* @var \Drupal\Core\Config\ConfigFactory
*/
protected $configFactory;
/**
Angie Byron
committed
* Constructs a \Drupal\system\ConfigFormBase object.
Angie Byron
committed
*
* @param \Drupal\Core\Config\ConfigFactory $config_factory
* The factory for configuration objects.
*/
public function __construct(ConfigFactory $config_factory) {
Angie Byron
committed
$this->configFactory = $config_factory;
}
/**
* {@inheritdoc}
Angie Byron
committed
*/
public static function create(ContainerInterface $container) {
return new static(
$container->get('config.factory')
Angie Byron
committed
);
}
/**
* Implements \Drupal\Core\Form\FormInterface::buildForm().
*/
public function buildForm(array $form, array &$form_state) {
$form['actions']['#type'] = 'actions';
$form['actions']['submit'] = array(
'#type' => 'submit',
Alex Pott
committed
'#value' => $this->t('Save configuration'),
'#button_type' => 'primary',
);
// By default, render the form using theme_system_config_form().
$form['#theme'] = 'system_config_form';
return $form;
}
/**
* Implements \Drupal\Core\Form\FormInterface::submitForm().
*/
public function submitForm(array &$form, array &$form_state) {
Alex Pott
committed
drupal_set_message($this->t('The configuration options have been saved.'));
Angie Byron
committed
/**
* {@inheritdoc}
*
* Overrides \Drupal\Core\Form\FormBase::config() so that configuration is
* returned override free. This ensures that overrides do not pollute saved
* configuration.
Angie Byron
committed
*/
protected function config($name) {
catch
committed
$old_state = $this->configFactory->getOverrideState();
$this->configFactory->setOverrideState(FALSE);
$config = $this->configFactory->get($name);
catch
committed
$this->configFactory->setOverrideState($old_state);
return $config;
Angie Byron
committed
}