Puncte:0

Cum să adăugați un handler de trimitere la o clasă de formular pe Drupal 8?

drapel cn

Aș dori să adaug un handler de trimitere la clasa mea de formulare, astfel încât valorile trimise să fie salvate. Clasa părinte nu le salvează, ci doar afișează un mesaj. Eu folosesc Drupal 8! Iată clasa mea de formulare:

<?php

spațiu de nume Drupal\ salutare\Form;

utilizați Drupal\Core\Form\ConfigFormBase;
utilizați Drupal\Core\Form\FormStateInterface;

clasa GreetingForm extinde ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  funcția publică getFormId() {
    returnează „formular de salutare”;
  }

/**
   * {@inheritdoc}
   */
  funcția publică buildForm(array $form, FormStateInterface $form_state) {

    $form = parent::buildForm($form, $form_state);

    $config = $this->config('greeting.settings');

    $form['page_text'] = matrice(
      '#type' => 'textarea',
      '#title' => $this->t('Conținutul paginii de salut'),
      '#default_value' => $config->get('page_text'),
      '#description' => $this->t('Vă permite să definiți textul paginii de salut'),
    );

    returnează $form;
  }

  /**
   * {@inheritdoc}
   */
  funcția publică validateForm(matrice &$form, FormStateInterface $form_state) {

  }

  /**
   * {@inheritdoc}
   */
  funcția publică submitForm(matrice &$form, FormStateInterface $form_state) {

    $config = $this->config('greeting.settings');

    $config->set('page_text', $form_state->getValue('page_text'));
    
    $config->salvare();

    return parent::submitForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  funcția protejată getEditableConfigNames() {
    întoarcere [
      „setări.întâmpinare”,
    ];
  }

}

$config = \Drupal::config('greeting.settings');
$page_title = $config->get('page_text');

Cum trebuie să fac?

drapel id
Ce înseamnă âsalvareâ aici? Codul dvs. nu salvează valoarea în configurația activă?
Jaypan avatar
drapel de
Codul pe care l-ați adăugat la sfârșitul cursului nu va afișa valoarea pe care ați salvat-o. Dacă așa determinați că nu se salvează, determinați incorect acest lucru. Din toate aparentele, clasa ta ar trebui să economisească bine.
drapel cn
@cilefen Da, codul meu stoca deja valoarea în configurația activă.
drapel cn
@Jaypan Da, am șters codul la sfârșitul cursului. Mulțumesc mult!
Puncte:0
drapel hk

Se pare că problema raportată în detaliile întrebării a fost rezolvată și codul din întrebare pare să funcționeze.

Cu toate acestea, pentru oricine ajunge pe această pagină și încearcă să găsească un răspuns la întrebarea din titlu, iată răspunsul.

Puteți atașa handler-uri personalizate de trimitere la butoanele de trimitere din formulare setând proprietatea #submit pe butonul de trimitere.

$form['actions']['button_name'] = [
  '#type' => 'trimite',
  '#value' => $this->t('Textul butonului'),
  '#submit' => ['::customSubmitHandler1', '::customSubmitHandler2'],
];

customSubmitHandler1 și customSubmitHandler2 ar fi funcții definite în clasa dvs. de formulare.

Dacă, în schimb, doriți să apelați o funcție definită într-un modul, puteți adăuga „custom_module_submit_handler” care poate fi o funcție definită într-un modul.

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.