You are here

public function SchemaCheckTrait::checkConfigSchema in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/lib/Drupal/Core/Config/Schema/SchemaCheckTrait.php \Drupal\Core\Config\Schema\SchemaCheckTrait::checkConfigSchema()

Checks the TypedConfigManager has a valid schema for the configuration.

Parameters

\Drupal\Core\Config\TypedConfigManagerInterface $typed_config: The TypedConfigManager.

string $config_name: The configuration name.

array $config_data: The configuration data, assumed to be data for a top-level config object.

Return value

array|bool FALSE if no schema found. List of errors if any found. TRUE if fully valid.

3 calls to SchemaCheckTrait::checkConfigSchema()
ConfigSchemaChecker::onConfigSave in core/lib/Drupal/Core/Config/Testing/ConfigSchemaChecker.php
Checks that configuration complies with its schema on config save.
SchemaCheckTestTrait::assertConfigSchema in core/modules/config/src/Tests/SchemaCheckTestTrait.php
Asserts the TypedConfigManager has a valid schema for the configuration.
SchemaCheckTraitTest::testTrait in core/modules/config/src/Tests/SchemaCheckTraitTest.php
Tests \Drupal\Core\Config\Schema\SchemaCheckTrait.

File

core/lib/Drupal/Core/Config/Schema/SchemaCheckTrait.php, line 51
Contains \Drupal\Core\Config\Schema\SchemaCheckTrait.

Class

SchemaCheckTrait
Provides a trait for checking configuration schema.

Namespace

Drupal\Core\Config\Schema

Code

public function checkConfigSchema(TypedConfigManagerInterface $typed_config, $config_name, $config_data) {

  // We'd like to verify that the top-level type is either config_base,
  // config_entity, or a derivative. The only thing we can really test though
  // is that the schema supports having langcode in it. So add 'langcode' to
  // the data if it doesn't already exist.
  if (!isset($config_data['langcode'])) {
    $config_data['langcode'] = 'en';
  }
  $this->configName = $config_name;
  if (!$typed_config
    ->hasConfigSchema($config_name)) {
    return FALSE;
  }
  $definition = $typed_config
    ->getDefinition($config_name);
  $data_definition = $typed_config
    ->buildDataDefinition($definition, $config_data);
  $this->schema = $typed_config
    ->create($data_definition, $config_data);
  $errors = array();
  foreach ($config_data as $key => $value) {
    $errors = array_merge($errors, $this
      ->checkValue($key, $value));
  }
  if (empty($errors)) {
    return TRUE;
  }
  return $errors;
}