Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[3.2] Regression in Config or Yaml ? #20340

Copy link
Copy link
Closed
@romainneutron

Description

@romainneutron
Issue body actions

Hello,

considering this code:

<?php

use Symfony\Component\Config\Definition\ConfigurationInterface;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\Dumper\YamlReferenceDumper;

require __DIR__.'/vendor/autoload.php';

class MyConfig implements ConfigurationInterface
{
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('pipou');

        $rootNode
            ->useAttributeAsKey('name')
            ->prototype('array')
                ->prototype('array')
                    ->children()
                        ->scalarNode('didou')
                        ->end()
                    ->end()
                ->end()
            ->end();

        return $treeBuilder;
    }
}

$dumper = new YamlReferenceDumper();

echo $dumper->dump(new MyConfig());

Until 3.1, this code worked well and outputs

pipou:

    # Prototype
    name:                 []

Since 3.2, it breaks:

PHP Fatal error:  Uncaught InvalidArgumentException: Child nodes must be named. in .../vendor/symfony/symfony/src/Symfony/Component/Config/Definition/ArrayNode.php:210
Stack trace:
#0 .../vendor/symfony/symfony/src/Symfony/Component/Config/Definition/Dumper/YamlReferenceDumper.php(210): Symfony\Component\Config\Definition\ArrayNode->addChild(Object(Symfony\Component\Config\Definition\ArrayNode))
#1 .../vendor/symfony/symfony/src/Symfony/Component/Config/Definition/Dumper/YamlReferenceDumper.php(64): Symfony\Component\Config\Definition\Dumper\YamlReferenceDumper->getPrototypeChildren(Object(Symfony\Component\Config\Definition\PrototypedArrayNode))
#2 .../vendor/symfony/symfony/src/Symfony/Component/Config/Definition/Dumper/YamlReferenceDumper.php(39): Symfony\Component\Config\Definition\Dumper\YamlReferenceDumper->writeNode(Object(Symfony\Component\Co in .../vendor/symfony/symfony/src/Symfony/Component/Config/Definition/ArrayNode.php on line 210

As I'm not really aware of the internal changes of both Yaml and Config component, somebody might have an idea about the origin of this issue.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.