Am un formular de setări care salvează informații de configurare la nivel de site
Funcția mea de trimitere a formularului arată cam așa
$date = [];
foreach ($grupuri ca $cheie) {
$date[$key] = $form_state->getValue($key);
dacă (gol ($date[$key])) {
$date[$key] = [];
}
}
$this->configFactory
->getEditable('my_config.settings')
->setData($date)
->salvare();
Problema mea este că, într-un apel invers, aș dori să pot seta direct valoarea unui singur câmp de configurare care este imbricat în acea matrice de date, fără a lua totul din nou și a schimba matricea de date și a o reseta cu ->setData
Datele din matricea mea de configurare arată astfel
[
„num_campaigns” => 4
„campanii” => [
'campaign_ids' => ['abc','def','ghi','jkl']
]
]
Și apelul meu arată așa
funcția publică removeField(matrice $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(['campaigns','campaign_ids',$num_campaigns], '')
$config_factory->salvare();
$form_state->setRebuild();
}
Problema mea este că a stabilit metoda acceptă un șir și nu o matrice. Dacă pot furniza doar un șir, cum pot seta valoarea a ceva care este imbricat în matricea mea de configurare? Utilizarea setării este chiar o opțiune? Sau trebuie să recurg la utilizarea setData?