LenientConfigSchemaChecker.php

Namespace

Drupal\Core\Config\Development

File

core/lib/Drupal/Core/Config/Development/LenientConfigSchemaChecker.php

View source
<?php

namespace Drupal\Core\Config\Development;

use Drupal\Core\Config\ConfigCrudEvent;
use Drupal\Core\Config\Schema\SchemaIncompleteException;
use Drupal\Core\Config\TypedConfigManagerInterface;
use Drupal\Core\Messenger\MessengerInterface;
use Psr\Log\LoggerInterface;

/**
 * Listens to the config save event and warns about invalid schema.
 */
class LenientConfigSchemaChecker extends ConfigSchemaChecker {
    
    /**
     * Constructs the ConfigSchemaChecker object.
     *
     * @param \Drupal\Core\Config\TypedConfigManagerInterface $typed_manager
     *   The typed config manager.
     * @param \Drupal\Core\Messenger\MessengerInterface $messenger
     *   The messenger service to display the warning.
     * @param \Psr\Log\LoggerInterface $logger
     *   The logger to save the warning.
     * @param string[] $exclude
     *   An array of config object names that are excluded from schema checking.
     */
    public function __construct(TypedConfigManagerInterface $typed_manager, MessengerInterface $messenger, LoggerInterface $logger, array $exclude = []) {
        parent::__construct($typed_manager, $exclude);
    }
    
    /**
     * Checks that configuration complies with its schema on config save.
     *
     * @param \Drupal\Core\Config\ConfigCrudEvent $event
     *   The configuration event.
     */
    public function onConfigSave(ConfigCrudEvent $event) : void {
        try {
            parent::onConfigSave($event);
        } catch (SchemaIncompleteException $exception) {
            $message = sprintf('%s. These errors mean there is configuration that does not comply with its schema. This is not a fatal error, but it is recommended to fix these issues. For more information on configuration schemas, check out <a href="%s">the documentation</a>.', $exception->getMessage(), 'https://www.drupal.org/docs/drupal-apis/configuration-api/configuration-schemametadata');
            $this->messenger
                ->addWarning($message);
            $this->logger
                ->warning($message);
        }
    }

}

Classes

Title Deprecated Summary
LenientConfigSchemaChecker Listens to the config save event and warns about invalid schema.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.