Wie Werte eines dynamischen Config-Formulars speichern?
Eingetragen von rhodes (631)
am 28.08.2019 - 13:35 Uhr in
am 28.08.2019 - 13:35 Uhr in
Hallo zusammen,
in einer mehrsprachigen Drupal 8 Installation soll ein Konfigurationsformular angelegt werden, das es erlaubt je Sprache einen bestimmten Konfigurationsstring zu speichern.
Ich gebe in der Build-Funktion des Formulars je Language ein entsprechendes Textfeld aus. Das Formular kann über /admin/config aufgerufen werden und zeigt je Language das Eingabefeld an.
public function buildForm(array $form, FormStateInterface $form_state) {
$language_manager = \Drupal::service('language_manager');
$languages = $language_manager->getLanguages();
$config = $this->config('my_config.settings');
foreach ($languages as $language) {
$langId = $language->getId();
$langName = $language->getName();
$form['my_config'][$langId] = array(
'#type' => ’textfield',
'#title' => $this->t('Config string for language ').$langName,
'#description' => $this->t('Please enter the config string.'),
'#default_value' => $config->get('my_config‘),
);
}
return parent::buildForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$this->configFactory->getEditable('my_config.settings')
->set('my_config', $form_state->getValue('my_config'))
->save();
parent::submitForm($form, $form_state);
}
Allerdings ist mir nicht ganz klar, wie ich die Änderungen je Textfeld in meine Konfiguration schreibe. Muss eventuell in submitForm auch eine Loop eingebaut werden?
Sehe gerade den Wald vor lauter Bäumen nicht. Bin für jeden Tipp dankbar.
Danke & Grüße
rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi. Du speicherst hier doch
am 31.08.2019 - 11:58 Uhr
Hi.
Du speicherst hier doch die Settings bei jedem Submit oder verstehe ich was falsch?
$this->configFactory->getEditable('my_config.settings')
->set('my_config', $form_state->getValue('my_config'))
->save();
MfG
Robert
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)