Symfony пользовательская конфигурация пакета с использованием arrayNode и scalarPrototype не объединяются, как ожидалось - PullRequest
0 голосов
/ 13 февраля 2020

Я сделал свой собственный Symfony пакет для некоторых базовых c связанных с API вещей, которые я повторно использую в проектах (в настоящее время используется в проекте sf5).

Однако сегодня он дошел до моего Обратите внимание, что что-то не работает (или даже не работает), как я и думал.

Моя конфигурация (здесь только один узел) определена как:

...

private function addSerializerNode()
{
    $treeBuilder = new TreeBuilder('serializer');
    $node = $treeBuilder->getRootNode();

    $node
        ->children()
            ->arrayNode('default_context')
                ->scalarPrototype()->end()
            ->end()
        ->end();

    return $node;
}

...

Кажется, не корректно переопределить при настройке моей конфигурации, как:

// config/packages/lens_api.yaml
lens_api:
    serializer:
        default_context:
            json_encode_options: 320

Затем я пытаюсь переопределить индекс (в dev), используя:

// config/packages/dev/lens_api.yaml
lens_api:
    serializer:
        default_context:
            json_encode_options: 448

Сброс загруженной конфигурации в результате:

^ array:4 [▼
  "serializer" => array:2 [▼
    "default_context" => array:3 [▼
      "circular_reference_handler" => "Lens\Bundle\ApiBundle\Serializer\CircularReferenceHandler"
      "json_encode_options" => 320
      0 => 448
    ]
    "id" => "hello"
  ]
  ...
]

Как видно, индекс конфигурации dev добавляется как 0, не заменяя первоначальное значение. Есть ли способ обойти это поведение? Предпочтительно, кроме определения каждого возможного параметра в arrayNode с использованием scalarNode s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...