Drupal: Wie modifiziere ich ui bilden, nachdem Schaltfläche ‚Entfernen‘ AJAX gedrückt?

StackOverflow https://stackoverflow.com/questions/2082591

  •  21-09-2019
  •  | 
  •  

Frage

Ich bin mit Drupal 6 und haben die AJAX-Modul installiert. Ich habe den folgenden Code:

function remove_manufacturer_role_form($form_state) {
  $form['#ajax'] = array(
    'enabled' => TRUE
  );
  $form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here');
  $form['submit'] = array('#type' => 'submit', '#value' => t('Remove yourself as manufacturer'));
  return $form;
}

function remove_manufacturer_role_form_submit($form, &$form_state) {
     $current_vars = ogrolerequestmanufacturerblock_get_current_vars();

     if( $current_vars )
     {
    $curr_gid = $current_vars['current_gid'];
    $curr_uid = $current_vars['current_user_id'];
    $delete_query = "DELETE FROM {og_users_roles} WHERE rid in (SELECT rid FROM {role} WHERE name='Manufacturer') AND uid=$curr_uid AND gid=$curr_gid";
    if( db_query($delete_query) )
        drupal_set_message("You successfully removed yourself as a manufacturer from this project");
     }
}

Im Grunde habe ich eine Form einen Benutzer als Hersteller in einem Projekt zu entfernen. Der Benutzer hat die Möglichkeit, sich zu entfernen. Diese Form ermöglicht es dem Benutzer eine Schaltfläche klicken, die AJAX wiederum nutzt das Formular abzuschicken, löschen die Rolle des Benutzers als Hersteller aus der Datenbank und den Benutzer benachrichtigen, ob sie erfolgreich war oder nicht. Es macht erfolgreich den Anruf mit AJAX und löscht die Rolle, wie es sollte, aber die Form hat immer noch die Entfernen-Taste auf sie gezeigt. Wenn der Benutzer die Taste erneut klickt gibt es einen Fehler b / c gibt es nichts zu löschen. Das ist in Ordnung, ich denke, b / c es nicht ein fataler Fehler ist und wirklich nichts beeinflussen ... aber es ist nicht schön für den Benutzer.

Gibt es eine Weise, die ich den Modulblock aktualisieren kann oder die Form ändern, das angezeigt wird, sobald es eingereicht wird?

Edit:

Dies scheint eine gute Lösung, aber ich kann nicht ganz scheint, um es zum Laufen zu bringen. Ich habe das delete.js Javascript in meinem Modul enthalten:

/**
 * Ajax Forms plugin for ogrolerequestmanufacturerblock 
 *
 * @param {String} hook
 * @param {Object} args
 * @return {Bool}
 */

Drupal.Ajax.plugins.ogrolerequestmanufacturerblock = function(hook, args) {
alert('it got into javascript!');
    if (hook === 'submit') {
        alert('submit called within javascript!');
    }
    return true;
}

Es scheint, nie in diese Javascript-Funktion zu erhalten. Wie funktioniert Drupal Know diese spezielle Funktion aufrufen?

War es hilfreich?

Lösung

Sie können prüfen, den Rückgabewert durch AJAX kommt und wenn die Entfernung erfolgreich war, können Sie eine display: none auf die Schaltfläche Entfernen tun.

Mit Blick auf die AJAX-Modul Dokumentation, ich glaube, Sie Drupal.Ajax.plugins.FOO(hook, args) implementieren müssen. Wenn hook == complete, können Sie Ihre Schaltfläche display: none gesetzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top