Drupal: Come faccio a modificare forma ui dopo il tasto 'Cancella' premuto utilizzando AJAX?

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

  •  21-09-2019
  •  | 
  •  

Domanda

Sto usando Drupal 6 e avere il modulo AJAX installato. Ho il seguente codice:

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");
     }
}

In sostanza, ho un modulo per rimuovere un utente come produttore all'interno di un progetto. L'utente ha la possibilità di rimuovere se stessi. Questo modulo consente all'utente di fare clic su un pulsante, che a sua volta utilizza AJAX per inviare il modulo, eliminare il ruolo dell'utente come produttore dal database, e notificare all'utente se ha avuto successo o meno. Si rende con successo la chiamata utilizzando AJAX e cancella il ruolo come dovrebbe, ma la forma è ancora il pulsante di rimozione mostrato su di esso. Se l'utente fa clic di nuovo il tasto dà un errore b / c non c'è nulla da eliminare. Questo va bene, immagino, b / c non è un errore fatale e in realtà non pregiudica nulla ... però, non è abbastanza per l'utente.

C'è un modo per rinfrescare blocco del modulo o modificare il modulo che viene visualizzato una volta che è stata presentata?

Modifica

Questa sembra una buona soluzione, ma io non riesco a sembrare per farlo funzionare. Ho incluso le delete.js javascript nel mio modulo:

/**
 * 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;
}

E non sembra mai entrare in questa funzione javascript. Come fa sapere drupal chiamare questa funzione specifica?

È stato utile?

Soluzione

È possibile controllare il valore di ritorno che passa AJAX e se la rimozione ha avuto successo, si può fare un display: none sul pulsante Rimuovi.

Guardando la documentazione del modulo AJAX, penso che sarà necessario implementare Drupal.Ajax.plugins.FOO(hook, args). Quando hook == complete, è possibile impostare il pulsante per display: none.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top