我对Yaml::Dump()
函数有疑问。
当我使用TaggedValue时,转储功能会忽略参数$ inline
如果我不使用TaggedValues,则可以正常使用。
这是示例代码
use Symfony\Component\Yaml\Yaml;
use Symfony\Component\Yaml\Tag\TaggedValue;
$Admins = array(
array(
'samaccountname' => ['user1'],
'cn' => ['Louisa Nicolas'],
'mail' => ['mail@domain.com'],
),
array(
'samaccountname' => ['user2'],
'cn' => ['Telper Max'],
'mail' => ['mail@domain.com'],
)
);
$rootYaml = array();
foreach ($Admins as $Admin) {
$adm = array(
'id' => $Admin['samaccountname'][0],
'annotations' => array(
'name' => $Admin['cn'][0],
'email' => $Admin['mail'][0]
));
$rootYaml[] = $adm;
$rootYamlTagged[] = new TaggedValue('user', $adm);
}
echo "##### Works without tags\n";
print Yaml::dump($rootYaml, 3);
echo "##### not working with tags\n";
print Yaml::dump($rootYamlTagged, 3);
结果:
##### Works without tags
-
id: user1
annotations:
name: 'Louisa Nicolas'
email: mail@domain.com
-
id: user2
annotations:
name: 'Telper Max'
email: mail@domain.com
##### not working with tags
- !user { id: user1, annotations: { name: 'Louisa Nicolas', email: mail@domain.com } }
- !user { id: user2, annotations: { name: 'Telper Max', email: mail@domain.com } }
我希望有标记的
- !user
id: user1,
annotations:
name: 'Louisa Nicolas'
email: mail@domain.com
- !user
id: user2
annotations:
name: 'Telper Max'
email: mail@domain.com
感谢您的帮助!
编辑: 我为此在支持团队上打开了一个错误,该错误已得到确认。 https://github.com/symfony/symfony/issues/32251
答案 0 :(得分:2)
错误已获批准。 在版本3.4中已修复。
拉取请求[Yaml] fix inline handling when dumping tagged values具有实际的代码更改。