Puncte:1

Setați valoarea imbricată în configurația stocabilă

drapel cn

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?

Puncte:2
drapel cn

Primul parametru este un șir cu chei imbricate separate prin puncte. Al doilea parametru este valoarea, care nu este neapărat un șir. Poate fi și o matrice:

$config->set('campaigns.campaign_ids', ['abc','def','ghi','jkl']);
Matt avatar
drapel cn
A funcționat mulțumesc!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.