Lucrez la unele funcționalități personalizate în interiorul unui tabel de vizualizare care permite un formular de „editare rapidă” ca câmp disponibil prin pluginul câmpului de vizualizări.
Formularul este redat pentru fiecare rând separat folosind un sub_id unic transmis generatorului de formulare pentru fiecare rând.
Am formularul care funcționează și trimite corect lucrurile, dar problema este că trebuie să fac două lucruri pe apel invers ajax, așa că folosesc sistemul AjaxResponse() pentru a face două acțiuni diferite.
Prima acțiune este actualizarea „valorii” unei anumite coloane din rândul de vizualizări. Al doilea este, în esență, doar returnarea $form; pentru a returna formularul.
Problema este că atunci când formularul face validarea, validarea funcționează, cu excepția faptului că mesajele nu apar până când nu reîmprospătesc pagina. Nu pot să-mi dau seama cum să-i spun ce wrapper să folosesc pentru a afișa mesajul formular, deoarece transmit două diferite răspunsului ajax, deoarece trebuie să fac două modificări.
Codul pe care îl folosesc în interiorul apelului meu ajax este următorul:
funcția publică quickEditAjax(&$form, FormStateInterface $form_state) {
$valori = $form_state->getValues();
$răspuns = AjaxResponse nou();
$status = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($values['status']);
$response->addCommand(new ReplaceCommand('.request-status-'. $values['id'], $status->getName()));
$response->addCommand(new ReplaceCommand('#quick-edit-wrapper-'. $this->sub_id,$form));
returnează $răspuns;
}
În unde #quick-edit-wrapper-$this->sub_id
este #id-ul unic setat pe formular și .request-status-$values['id']
este clasa atașată la coloana de vizualizare a tabelului pe care încerc să o schimb.
Atât forma, cât și coloana tabelului au id-ul și clasa corecte pe ele, iar coloana se actualizează cu succes prin apelarea ajax addCommand().
Mesajele de eroare de validare nu apar în niciunul dintre ambalaje, dar aș dori să apară în #quick-edit-wrapper
învelitoare. Dacă nu există erori de validare și trimiterea trece, trec și un mesaj de succes și nici acel mesaj nu apare până nu reîmprospătează pagina.
Există vreo modalitate prin care pot spune mesajelor în ce wrapper să redau? Răspunsul ajax pare să fie confundat cu care să utilizați.