Puncte:0

apel invers AJAX nu a fost declanșat în hook_form_alter()

drapel br

În Drupal 7, clientul dorește să adauge un buton la user_profile_form. Deci, în modulul meu personalizat, creez butonul și apelul său însoțitor. Dar, în timp ce butonul apare pe formular, nu văd nicio dovadă că apelul invers este declanșat.

funcția member_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == "user_profile_form") {
     
  $form['send_reset'] = matrice(
          '#type' => 'buton',
          '#prefix' => "<div id='reset-div'>",
          '#sufix' => "</div>",
          '#value' => "Resetează membrul",
          '#ajax' => [
            'callback' => 'member_reset_user',
            'wrapper' => 'reset-div',
            'eveniment' => 'trimite', //clic etc
          ],
          '#weight' => -150,
          '#attributes' => matrice(
            'id' => array('reset-cancel')
          ),
        );
}
function member_reset_user($form, &$form_state) {
  a muri();  
  încerca {
    my_user_function():
    watchdog('membru', 'resetare utilizator', WATCHDOG_NOTICE);
  }
  prinde (Excepție $e) {
    watchdog('membru', 'resetare eşuată', WATCHDOG_ERROR);
  }
  returnează $form;
}

HTML-ul generat de Drupal sugerează o funcție de trimitere.

  <div id="reset-div"><input id="reset-cancel" type="submit" name="op" value="Reset member" class="form-submit"></div>

Deoarece nu creez noi elemente de formular în apel invers, doar emit o funcție personalizată, nu pot vedea ce greșesc. M-am uitat la asta de prea mult timp.

apaderno avatar
drapel us
Consider că apel invers AJAX nu este invocat așa cum și când vă așteptați. Ce ați făcut pentru a vă asigura că apelul invers este invocat?
apaderno avatar
drapel us
(Există o greșeală de tipar, în acel cod și un bloc de cod nu este acolo unde ar trebui să fie. Acestea nu sunt motivele pentru care apelul invers să nu fie invocat, dar codul afișat nu este ceea ce utilizați de fapt, probabil.)
apaderno avatar
drapel us
Pentru a fi clar, deoarece evenimentul AJAX nu este setat pentru acel buton, cel implicit este *mousedown*. Reapelarea AJAX este invocată numai pentru acel eveniment JavaScript.
drapel br
@apaderno Mulțumesc pentru răspuns. Prima linie de apel invers are un die() pentru a fi sigur. Revizuirea de mai sus. Evenimentul AJAX m-a aruncat la început, dar am revizuit și adăugat eveniment pentru clic, trimite. Încă nu se declanșează.

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.