Skip to content
ConfigFormBase.php 2.08 KiB
Newer Older
 * Contains \Drupal\Core\Form\ConfigFormBase.
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Base class for implementing system configuration forms.
 */
abstract class ConfigFormBase extends FormBase {

  /**
   * Stores the configuration factory.
   *
   * @var \Drupal\Core\Config\ConfigFactory
   */
  protected $configFactory;

  /**
   * Constructs a \Drupal\system\ConfigFormBase object.
   *
   * @param \Drupal\Core\Config\ConfigFactory $config_factory
   *   The factory for configuration objects.
   */
  public function __construct(ConfigFactory $config_factory) {
   */
  public static function create(ContainerInterface $container) {
    return new static(

  /**
   * Implements \Drupal\Core\Form\FormInterface::buildForm().
   */
  public function buildForm(array $form, array &$form_state) {
    $form['actions']['#type'] = 'actions';
    $form['actions']['submit'] = array(
      '#type' => 'submit',
    // 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) {
    drupal_set_message($this->t('The configuration options have been saved.'));
   *
   * Overrides \Drupal\Core\Form\FormBase::config() so that configuration is
   * returned override free. This ensures that overrides do not pollute saved
   * configuration.
    $old_state = $this->configFactory->getOverrideState();
    $this->configFactory->setOverrideState(FALSE);
    $config = $this->configFactory->get($name);
    $this->configFactory->setOverrideState($old_state);