[Config] Fix YamlReferenceDumper for nested prototypes
This commit is contained in:
parent
835176c932
commit
1e8051081c
@ -96,7 +96,10 @@ class XmlReferenceDumper
|
||||
$rootAttributes[$key] = str_replace('-', ' ', $rootName).' '.$key;
|
||||
}
|
||||
|
||||
if ($prototype instanceof ArrayNode) {
|
||||
if ($prototype instanceof PrototypedArrayNode) {
|
||||
$prototype->setName($key);
|
||||
$children = array($key => $prototype);
|
||||
} elseif ($prototype instanceof ArrayNode) {
|
||||
$children = $prototype->getChildren();
|
||||
} else {
|
||||
if ($prototype->hasDefaultValue()) {
|
||||
|
@ -199,8 +199,14 @@ class YamlReferenceDumper
|
||||
|
||||
if ($prototype instanceof ArrayNode) {
|
||||
$keyNode = new ArrayNode($key, $node);
|
||||
$children = $prototype->getChildren();
|
||||
|
||||
if ($prototype instanceof PrototypedArrayNode) {
|
||||
$children = $this->getPrototypeChildren($prototype);
|
||||
}
|
||||
|
||||
// add children
|
||||
foreach ($prototype->getChildren() as $childNode) {
|
||||
foreach ($children as $childNode) {
|
||||
$keyNode->addChild($childNode);
|
||||
}
|
||||
} else {
|
||||
|
@ -78,6 +78,20 @@ class XmlReferenceDumperTest extends \PHPUnit_Framework_TestCase
|
||||
pass=""
|
||||
/>
|
||||
|
||||
<!-- prototype -->
|
||||
<cms-page page="cms page page">
|
||||
|
||||
<!-- prototype -->
|
||||
<!-- title: Required -->
|
||||
<!-- path: Required -->
|
||||
<page
|
||||
locale="page locale"
|
||||
title=""
|
||||
path=""
|
||||
/>
|
||||
|
||||
</cms-page>
|
||||
|
||||
</config>
|
||||
|
||||
EOL
|
||||
|
@ -65,6 +65,15 @@ acme_root:
|
||||
-
|
||||
user: ~
|
||||
pass: ~
|
||||
cms_pages:
|
||||
|
||||
# Prototype
|
||||
page:
|
||||
|
||||
# Prototype
|
||||
locale:
|
||||
title: ~ # Required
|
||||
path: ~ # Required
|
||||
|
||||
EOL;
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ class ExampleConfiguration implements ConfigurationInterface
|
||||
$rootNode
|
||||
->fixXmlConfig('parameter')
|
||||
->fixXmlConfig('connection')
|
||||
->fixXmlConfig('cms_page')
|
||||
->children()
|
||||
->booleanNode('boolean')->defaultTrue()->end()
|
||||
->scalarNode('scalar_empty')->end()
|
||||
@ -67,6 +68,18 @@ class ExampleConfiguration implements ConfigurationInterface
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->arrayNode('cms_pages')
|
||||
->useAttributeAsKey('page')
|
||||
->prototype('array')
|
||||
->useAttributeAsKey('locale')
|
||||
->prototype('array')
|
||||
->children()
|
||||
->scalarNode('title')->isRequired()->end()
|
||||
->scalarNode('path')->isRequired()->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
->end()
|
||||
;
|
||||
|
||||
|
Reference in New Issue
Block a user