Absenden (Submit) des Konfigurationsformulars eines Blocks
Fügen Sie die folgende Methode zur Klasse HelloBlock hinzu. In diesem Beispiel befindet sie sich in der Datei src/Plugin/Block/HelloBlock.php, aber sobald Sie anfangen, mehr objektorientiert zu denken, ist der physische Speicherort in der Dateistruktur weniger wichtig als der Namespace. Wenn Sie ein sehr erfahrener OO-Programmierer sind, halten Sie beide eng synchronisiert. Aber für alle Fälle ist der Namespace tatsächlich sehr ähnlich zum Namen des Modulordners und zum Maschinennamen unseres Moduls, was später wichtig wird, wenn Sie programmatisch mit dem Code Ihres Moduls interagieren möchten.
/** * {@inheritdoc} */ public function blockSubmit($form, FormStateInterface $form_state) { $this->configuration['hello_block_name'] = $form_state->getValue('hello_block_name'); }
Wenn Sie ein Fieldset als Wrapper um Ihre Formularelemente haben, sollten Sie ein Array an die Funktion getValue() übergeben, anstatt nur den Feldnamen. Hier ist myfieldset der Feldsatz, der das Feld hello_block_name umgibt.
$this->configuration['hello_block_name'] = $form_state->getValue(['myfieldset', 'hello_block_name']);
Das Hinzufügen dieses Codes bedeutet, dass das Formular verarbeitet wird und die Eingabedaten für das Formular in der Konfiguration für diese Blockinstanz gespeichert werden, unabhängig von anderen Blockinstanzen. Allerdings verwendet der Block die geänderten Konfigurationswerte noch nicht. Das folgt auf der nächsten Seite des Buches.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.