Drupal: Comment puis-je modifier la forme ui après le bouton « Supprimer » pressé en utilisant AJAX?

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

  •  21-09-2019
  •  | 
  •  

Question

J'utilise Drupal 6 et que le module AJAX installé. Je le code suivant:

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

En fait, j'ai un formulaire pour supprimer un utilisateur en tant que fabricant dans un projet. L'utilisateur a la possibilité de se retirer. Ce formulaire permet à l'utilisateur de cliquer sur un bouton, ce qui utilise AJAX pour soumettre le formulaire, supprimer le rôle de l'utilisateur en tant que fabricant de la base de données, et en informer l'utilisateur si elle a réussi ou non. Il fait avec succès l'appel en utilisant AJAX et supprime le rôle comme il se doit, mais la forme a encore le bouton de suppression qui y est indiquée. Si l'utilisateur clique sur le bouton à nouveau, il donne une erreur b / c il n'y a rien à supprimer. Ceci est OK, je suppose, b / c est pas une erreur fatale et n'affecte pas vraiment quoi que ce soit ... Mais, ce n'est pas assez pour l'utilisateur.

Est-il possible que je peux rafraîchir le bloc du module ou modifier le formulaire qui apparaît une fois qu'il est soumis?

Modifier

Cela semble être une bonne solution, mais je ne peux pas sembler tout à fait pour le faire fonctionner. J'ai inclus les delete.js javascript au sein de mon module:

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

Il ne semble jamais entrer dans cette fonction javascript. Comment savoir appeler drupal cette fonction spécifique?

Était-ce utile?

La solution

Vous pouvez vérifier la valeur de retour à venir à travers AJAX et si la suppression a été réussie, vous pouvez faire un display: none sur le bouton Supprimer.

En regardant la documentation du module AJAX, je pense que vous aurez besoin de mettre en œuvre Drupal.Ajax.plugins.FOO(hook, args). Lorsque hook == complete, vous pouvez configurer votre bouton pour display: none.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top