Puncte:-1

apel invers personalizat drupal în formularul de editare a nodului nu se declanșează

drapel eg

Sunt destul de nou în drupal, am un buton personalizat adăugat la o pagină de editare a tipului de conținut, când dau clic pe acel buton vreau să apelez o funcție, dar se pare că nu apelează o funcție când văd consola, văd drupa ajax eroare apare ori de câte ori dau clic pe butonul . va rog sa-mi spuneti ce am gresit aici.

funcția mymodule_form_node_program_edit_form_alter(&$form, FormStateInterface $form_state) {
  $form['aplica'] = matrice(
    '#type' => 'trimite',
    '#value' => t('Aplicați'),
    '#weight' => '9',
    '#executes_submit_callback' => FALSE,
    '#limit_validation_errors' => array(),
    '#ajax' => matrice(
      'callback' => 'button_test_callback',
    ),
  );
}
    function button_test_callback(matrice &$form, \Drupal\Core\Form\FormStateInterface $form_state) {
  echo '<script>alertă("Bun venit")</script>';
  returnează $form;
}

eroare pe care o primesc:

Neprins Drupal.AjaxError {mesaj: „\nA apărut o eroare HTTP AJAX.\nCodul rezultat HTTP: 50â¦\Core\DrupalKernel->handle(Object) (Linie: 19)\n”, nume: „AjaxError”} mesaj: „\nA apărut o eroare HTTP AJAX.\nCodul rezultat HTTP: 500\nUrmează informațiile de depanare.\nCale: /node/680911/edit?destination=/admin/content&ajax_form=1\nStatusText: error\nResponseText: site-ul a fost întâlnit eroare neașteptată. Vă rugăm să încercați din nou mai târziu.Symfony\Component\HttpKernel\Exception\HttpException: apelarea #ajax specificată este goală sau nu poate fi apelată.în Drupal\Core\Form\FormAjaxResponseBuilder->buildResponse() (linia 67 din core/lib/Drupal/Core/Form/FormAjaxResponseBuilder.php). Drupal\Core\Form\EventSubscriber\FormAjaxSubscriber->onException(Object, 'kernel.exception', Object)\ncall_user_func(Array, Object, 'kernel.exception', Object) (Linie: 111)\nDrupal\Component\EventDispatcher\ ContainerAwareEventDispatcher->dispatch('kernel.exception', Object) (Linie: 227)\nSymfony\Component\HttpKernel\HttpKernel->handleException(Object, Object, 1) (Linie: 79)\nSymfony\Component\HttpKernel\HttpKernel >handle(Obiect, 1, 1) (Linie: 67)\nDrupal\simple_oauth\HttpMiddleware\BasicAuthSwap->handle(Obiect, 1, 1) (Linie: 57)\nDrupal\Core\StackMiddleware\Session->handle(Object , 1, 1) (Linie: 47)\nDrupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Linie: 106)\nDrupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) ) (Linie: 85)\nDrupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Linie: 49)\nAsm89\Stack\Cors->handle(Object, 1, 1) (Linie: 50) \nDrupal\ban\BanMiddleware->handle(Obiect, 1, 1) (Linie: 47)\nDrupal\Core\StackMiddleware\ReverseProxyMiddleware->han dle(Obiect, 1, 1) (Linie: 52)\nDrupal\Core\StackMiddleware\NegotiationMiddleware->handle(Obiect, 1, 1) (Linie: 23)\nStack\StackedHttpKernel->handle(Obiect, 1, 1) (Linia: 708)\nDrupal\Core\DrupalKernel->handle(Obiect) (Linia: 19)\n"

Puncte:0
drapel de

Utilizați o definiție de apel invers D7. Trebuie definit ca un apel invers D8+. Deci asta:

funcția button_test_callback($form, &$form_state) {

Ar trebui sa fie asta:

function button_test_callback(matrice &$form, \Drupal\Core\Form\FormStateInterface $form_state) {
vyshnavi avatar
drapel eg
Trec la aceasta și încă primesc aceeași eroare, se pare că funcția button_test_callback nu este apelată
Jaypan avatar
drapel de
Am actualizat codul, îi lipsea o bară oblică, așa că ar trebui să încercați codul actualizat. De asemenea, în ce fișier se află `button_test_callback()`?
vyshnavi avatar
drapel eg
încă nu funcționează, butonul_test_callback este în același fișier. vreau să schimb valoarea câmpului nodului când fac clic pe butonul personalizat din formularul de editare a nodului fără a trimite formularul de editare a nodului
Jaypan avatar
drapel de
„în același fișier”
vyshnavi avatar
drapel eg
este fișierul modul personalizat, curs_program.module
Jaypan avatar
drapel de
Bine, atunci ar trebui să funcționeze. Actualizați postarea inițială pentru a vă afișa codul actual.
vyshnavi avatar
drapel eg
Am actualizat codul, primesc Uncaught Drupal.AjaxError așa cum am menționat în întrebare ori de câte ori dau clic pe butonul.
Jaypan avatar
drapel de
Dacă acesta este codul dvs. actual, trebuie să returnați o valoare din apelul invers ajax.
vyshnavi avatar
drapel eg
poti da un exemplu?
Jaypan avatar
drapel de
Pentru a testa, adăugați `return $form;` la apelul dvs. ajax.
vyshnavi avatar
drapel eg
am adăugat formularul de returnare $ și am actualizat și codul din întrebare, dar încă nu declanșez funcția, încă primesc eroarea ajax în consolă
Jaypan avatar
drapel de
Apelul „echo” vă poate cauza probleme. Ai încercat fără asta?
vyshnavi avatar
drapel eg
Să [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/128913/discussion-between-vyshnavi-and-jaypan).
vyshnavi avatar
drapel eg
hii jaypan , după ce eliminăm eco, eroarea nu apare dar vreau să schimb valoarea câmpului $form['field_text_plain']['widget'][0]['value']['#value'] = '75433g'; dar nu se vede trebuie să trimit valoarea în schimb?
Jaypan avatar
drapel de
Bun venit la Drupal Answers - este un site cu o singură întrebare și un singur răspuns. Întrebarea apelului dvs. gol a fost rezolvată și, prin urmare, întrebarea pe care tocmai ați pus-o este o întrebare nouă. Vă rugăm să marcați această întrebare ca fiind rezolvată, apoi deschideți un subiect nou pentru problema respectivă.
vyshnavi avatar
drapel eg
Ohh sigur, multumesc pentru ajutor :)

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.