You are here

trait ConfigFormBaseTrait in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Form/ConfigFormBaseTrait.php \Drupal\Core\Form\ConfigFormBaseTrait

Provides access to configuration for forms.

This trait provides a config() method that returns override free and mutable config objects if the configuration name is in the array returned by the getEditableConfigNames() implementation.

Forms that present configuration to the user have to take care not to save configuration overrides to the stored configuration since overrides are often environment specific. Default values of form elements should be obtained from override free configuration objects. However, if a form reacts to configuration in any way, for example sends an email to the system.site:mail address, then it is important that the value comes from a configuration object with overrides. Therefore, override free and editable configuration objects are limited to those listed by the getEditableConfigNames() method.

Hierarchy

5 files declare their use of ConfigFormBaseTrait
ContactFormEditForm.php in core/modules/contact/src/ContactFormEditForm.php
Contains \Drupal\contact\ContactFormEditForm.
DefaultProcessor.php in core/modules/aggregator/src/Plugin/aggregator/processor/DefaultProcessor.php
Contains \Drupal\aggregator\Plugin\aggregator\processor\DefaultProcessor.
NegotiationBrowserDeleteForm.php in core/modules/language/src/Form/NegotiationBrowserDeleteForm.php
Contains \Drupal\language\Form\NegotiationBrowserDeleteForm.
SearchPageListBuilder.php in core/modules/search/src/SearchPageListBuilder.php
Contains \Drupal\search\SearchPageListBuilder.
TestProcessor.php in core/modules/aggregator/tests/modules/aggregator_test/src/Plugin/aggregator/processor/TestProcessor.php
Contains \Drupal\aggregator_test\Plugin\aggregator\processor\TestProcessor.

File

core/lib/Drupal/Core/Form/ConfigFormBaseTrait.php, line 28
Contains \Drupal\Core\Form\ConfigFormBaseTrait.

Namespace

Drupal\Core\Form
View source
trait ConfigFormBaseTrait {

  /**
   * Retrieves a configuration object.
   *
   * Objects that use the trait need to implement the
   * \Drupal\Core\Form\ConfigFormBaseTrait::getEditableConfigNames() to declare
   * which configuration objects this method returns override free and mutable.
   * This ensures that overrides do not pollute saved configuration.
   *
   * @param string $name
   *   The name of the configuration object to retrieve. The name corresponds to
   *   a configuration file. For @code \Drupal::config('book.admin') @endcode,
   *   the config object returned will contain the contents of book.admin
   *   configuration file.
   *
   * @return \Drupal\Core\Config\Config|\Drupal\Core\Config\ImmutableConfig
   *   A configuration object.
   */
  protected function config($name) {

    /** @var \Drupal\Core\Config\ConfigFactoryInterface $config_factory */
    if (method_exists($this, 'configFactory')) {
      $config_factory = $this
        ->configFactory();
    }
    elseif (property_exists($this, 'configFactory')) {
      $config_factory = $this->configFactory;
    }
    if (!isset($config_factory) || !$config_factory instanceof ConfigFactoryInterface) {
      throw new \LogicException('No config factory available for ConfigFormBaseTrait');
    }
    if (in_array($name, $this
      ->getEditableConfigNames())) {

      // Get a mutable object from the factory.
      $config = $config_factory
        ->getEditable($name);
    }
    else {
      $config = $config_factory
        ->get($name);
    }
    return $config;
  }

  /**
   * Gets the configuration names that will be editable.
   *
   * @return array
   *   An array of configuration object names that are editable if called in
   *   conjunction with the trait's config() method.
   */
  protected abstract function getEditableConfigNames();

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigFormBaseTrait::config protected function Retrieves a configuration object.
ConfigFormBaseTrait::getEditableConfigNames abstract protected function Gets the configuration names that will be editable. 36