извините за название, которое я знаю, не так объяснительно, как хотелось бы.
Я создаю файл конфигурации для пакета и хочу, чтобы этот элемент en был определен несколькими способами.
Это разные способы определения моей записи:
properties:
property1: ~
property2: ~
property3: Custom label3
property4:
label: Custom label4
type: int
Или
properties:
- property1
- property2
- { property: property3, label: Custom label3 }
- { property: property4, label: Custom label4, type: int }
Обе конфигурации должны привести к следующей структуре:
"properties" => [
"property1" => [
"label": null
"type": null
],
"property2" => [
"label": null
"type": null
],
"property3" => [
"label": "Custom label 3"
"type": null
],
"property4" => [
"label": "Custom label 4"
"type": "int"
],
]
Это текущий код, который у меня есть:
->arrayNode('properties')
->useAttributeAsKey('property')
->arrayPrototype()
->beforeNormalization()
->ifString()->then(function($item) { return ['property' => $item]; })
->end()
->children()
->scalarNode('property')->defaultNull()->end()
->scalarNode('label')->defaultNull()->end()
->scalarNode('type')->defaultNull()->end()
->end()
->end()
->end()
С первым кодом я получаю следующий результат, который почти идеален:
"properties" => array:4 [
"property1" => array:3 [
"property" => null
"label" => null
"type" => null
]
"property2" => array:3 [
"property" => null
"label" => null
"type" => null
]
"property3" => array:3 [
"property" => "Custom label3"
"label" => null
"type" => null
]
"property4" => array:3 [
"label" => "Custom label4"
"type" => "int"
"property" => null
]
]
В каждой записиу него есть "property" => null
. Как я могу удалить свойство, которое уже есть в ключе?
Во втором примере я получаю следующий результат:
"properties" => array:4 [
0 => array:3 [
"property" => "property1"
"label" => null
"type" => null
]
1 => array:3 [
"property" => "property2"
"label" => null
"type" => null
]
"property3" => array:3 [
"label" => "Custom label 3"
"property" => null
"type" => null
]
"property4" => array:3 [
"label" => "Custom label 4"
"type" => "int"
"property" => null
]
]
Как вы можете видетьпервые две записи не имеют property
в качестве ключа, у него есть номер, как у обычного массива. Как я могу это решить?
Спасибо