Closed
Description
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.