Issue #3485296 by bradjones1, longwave, alexpott: Regression: Deprecation of `yaml_parser_class` setting in 10.3 breaks sites < 11.0

(cherry picked from commit 4a8aaa4a9c)
merge-requests/9780/head
Dave Long 2024-11-12 09:18:41 +00:00
parent 4c074e3318
commit ebba8e798f
No known key found for this signature in database
GPG Key ID: ED52AE211E142771
4 changed files with 27 additions and 3 deletions

View File

@ -49,6 +49,10 @@
%Drupal\\editor\\Form\\EditorImageDialog is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3291493%
%Drupal\\editor\\Form\\EditorLinkDialog is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3291493%
# In Drupal 10, skip deprecations for the "yaml_parser_class" setting.
# This is retained with a BC layer, but removed in Drupal 11.
%The "yaml_parser_class" setting is deprecated in drupal:10.3.0. This setting should be removed from the settings file, since its usage has been removed. See https://www.drupal.org/node/3415489.%
# Symfony 7.
%Method "Symfony\\Contracts\\Service\\ResetInterface::reset\(\)" might add "void" as a native return type declaration in the future. Do the same in implementation "Drupal\\Component\\DependencyInjection\\Container" now to avoid errors or add an explicit @return annotation to suppress this message.%

View File

@ -730,6 +730,8 @@ $settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml';
* Provide a fully qualified class name here if you would like to provide an
* alternate implementation YAML parser. The class must implement the
* \Drupal\Component\Serialization\SerializationInterface interface.
*
* This setting is deprecated in Drupal 10.3 and removed in Drupal 11.
*/
# $settings['yaml_parser_class'] = NULL;

View File

@ -1,7 +1,23 @@
<?php
// phpcs:ignoreFile
namespace Drupal\Core\Serialization;
use Drupal\Core\Site\Settings;
use Drupal\Component\Serialization\Yaml as ComponentYaml;
/**
* Provides a BC layer for Drupal\Core\Serialization\Yaml.
* Provides a YAML serialization implementation.
*
* Allow settings to override the YAML implementation resolution.
*/
class_alias('\Drupal\Component\Serialization\Yaml', '\Drupal\Core\Serialization\Yaml');
class Yaml extends ComponentYaml {
public static function decode($raw) {
if ($class = Settings::get('yaml_parser_class')) {
return $class::decode($raw);
}
return parent::decode($raw);
}
}

View File

@ -730,6 +730,8 @@ $settings['container_yamls'][] = $app_root . '/' . $site_path . '/services.yml';
* Provide a fully qualified class name here if you would like to provide an
* alternate implementation YAML parser. The class must implement the
* \Drupal\Component\Serialization\SerializationInterface interface.
*
* This setting is deprecated in Drupal 10.3 and removed in Drupal 11.
*/
# $settings['yaml_parser_class'] = NULL;