用下面的配置樹:停止Symfony 2配置處理器添加一個空數組?
$rootNode
->fixXmlConfig('parameter')
->children()
->arrayNode('parameters')
->useAttributeAsKey('name')
->prototype('array')
->children()
->scalarNode('type')->end()
->scalarNode('value')->end()
->end()
->end()
->end()
->end();
......就算我不指定parameters
鍵,Symfony的是添加一個空數組:
$config = $processor->processConfiguration($configuration, array());
var_dump($config); // Output is array('parameters' => array())
但我想parameters
關鍵未設置,不存在,如果沒有參數。
我試過在beforeNormalization
刪除鍵(如果爲空),但它不工作:
$rootNode
->beforeNormalization()
->always(function ($v) {
if(empty($v['parameters'])) {
unset($v['parameters']);
}
return $v;
})
似乎與一個空數組中永遠不會執行規範化回調之前。
的問題是我必須在配置本身內部執行一些驗證,並且需要檢查參數是否爲空。 – gremo
它在我看來,如果沒有提供配置密鑰,標準化和驗證回調將不會運行。您可以將'isRequired()'添加到您的陣列節點定義中,以確保提供了該配置密鑰。也許這可以幫助? – gatisl