Puncte:0

Metodele setError sau setRebuilld întrerupe formularul de validare

drapel vn
<?php

spațiu de nume Drupal\modulul_personalizat\Form;

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

/**
 * Class DefaultForm.
 */
clasa DefaultForm extinde FormBase {

  /**
   * {@inheritdoc}
   */
  funcția publică getFormId() {
    returnează 'default_form';
  }

  /**
   * {@inheritdoc}
   */
  funcția publică buildForm(array $form, FormStateInterface $form_state) {
    $form['test'] = [
      '#type' => 'câmp text',
      '#title' => $this->t('Test'),
      '#maxlength' => 64,
      '#size' => 64,
      '#weight' => '0',
    ];
    $form['trimite'] = [
      '#type' => 'trimite',
      '#value' => $this->t('Trimite'),
    ];

    $form_state->setErrorByName('test', 'eroare');
    returnează $form;
  }

  /**
   * {@inheritdoc}
   */
  funcția publică validateForm(matrice &$form, FormStateInterface $form_state) {
    $form_state->setErrorByName('test', 'eroare');
    parent::validateForm($form, $form_state);
  }

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

}

Atunci când se utilizează setError, setErrorByName sau setRebuild metode, fie că este în validateForm sau submitForm, îmi rupe formularul dându-mi a Dimensiunea de memorie permisă de XXX octeți a fost epuizată eroare când trimit formularul.

Problema este că nu văd nimic în jurnale, cu excepția miilor de erori „404”, ca și cum aș avea ceva care declanșează o buclă infinită.

În exemplu, le am pe amândouă setErrorByName și setRebuild, dar se întâmplă chiar și cu unul dintre ei.

Vă puteți gândi la ceva care poate declanșa această eroare?

drapel cn
Dacă aceasta este aceeași cu întrebarea ta anterioară (unde cred că ai bănuit că a fost o problemă cu serverul?), probabil că va trebui să oferi mai multe detalii pentru a obține ajutor. Aceleași metode sunt folosite în multe, multe site-uri web fără probleme, iar încercarea de a ghici ce ar putea pierde memorie în afara codului pe care l-ați arătat este greu de spus. Ați lăsat încă un depanator/profiler adecvat să dezvolte pe el? Știți unde se întâmplă scurgerea?
Corentin Le Fur avatar
drapel vn
De fapt, nu. Tocmai am verificat că bug-ul nu apare pe un proiect similar (aceeași versiune Drupal, același server Docker). Voi testa pentru a vedea care sunt diferențele dintre aceste două proiecte și voi reveni.
Puncte:0
drapel vn

Ok, tocmai am aflat ce a declanșat eroarea.

Se pare că era de la un alt modul personalizat, unde unul dintre controlerul meu returna o excepție 404.Încă nu știu cum sau de ce, dar când (și doar când) trimiterea unui formular a fost declanșată excepția 404.

Îmi pare rău că v-am făcut să vă pierdeți timpul dacă ați încercat să înțelegeți această problemă.

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.