У меня есть форма настроек, которая сохраняет информацию о конфигурации сайта
Моя функция отправки формы выглядит примерно так
$данные = [];
foreach ($groups как $key) {
$data[$key] = $form_state->getValue($key);
если (пусто ($ данные [$ ключ])) {
$данные[$ключ] = [];
}
}
$this->configFactory
->getEditable('my_config.settings')
->setData($данные)
-> сохранить();
Моя проблема в том, что в обратном вызове я хотел бы иметь возможность напрямую устанавливать значение одного поля конфигурации, вложенного в этот массив данных, без повторного захвата всего, изменения массива данных и сброса его с помощью ->setData
Данные в моем массиве конфигурации выглядят так
[
'num_campaigns'=> 4
'кампании'=> [
'campaign_ids' => ['abc','def','ghi','jkl']
]
]
И мой обратный вызов выглядит так
публичная функция removeField (массив $ form, FormStateInterface $ form_state) {
$config = $this->getConfig();
$num_campaigns = $config['num_campaigns']-1;
$config_factory = $this->configFactory->getEditable('my_config.settings');
$config_factory->set('num_campaigns', $num_campaigns);
$config_factory->set(['кампании','campaign_ids',$num_campaigns], '')
$config_factory->сохранить();
$form_state->setRebuild();
}
Моя проблема в том, что установлен Метод принимает строку, а не массив. Если я могу предоставить только строку, как мне установить значение чего-то, что вложено в мой массив конфигурации? Является ли использование набора даже вариантом? Или мне нужно прибегнуть к использованию setData?