Drupal: ¿Cómo modifico forma ui después el botón 'Eliminar' se presiona el uso de AJAX?

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

  •  21-09-2019
  •  | 
  •  

Pregunta

Estoy utilizando Drupal 6 y he instalado el módulo de AJAX. Tengo el siguiente código:

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

Básicamente, tengo una forma de eliminar un usuario como un fabricante dentro de un proyecto. El usuario tiene la capacidad de eliminar a sí mismos. Esta forma permite que el usuario haga clic en un botón, que a su vez utiliza AJAX para enviar el formulario, eliminar el papel del usuario como fabricante de la base de datos, y notificar al usuario si se ha realizado correctamente o no. Se hace con éxito la llamada utilizando AJAX y elimina el papel como debería, pero la forma todavía tiene el botón de eliminación se muestra en ella. Si el usuario hace clic en el botón de nuevo se da un error b / c no hay nada que eliminar. Esto está bien, supongo, b / c no es un error grave y realmente no afecta en nada ... sin embargo, no es bastante para el usuario.

¿Hay alguna manera de refrescar el bloque del módulo o modificar el formulario que se muestra una vez que se presentó?

Editar

Esto parece una buena solución, pero no puede parecer bastante para conseguir que funcione. He incluido los delete.js javascript dentro de mi módulo:

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

Nunca parece entrar en esta función de JavaScript. ¿Cómo sabe que llamar a esta función específica Drupal?

¿Fue útil?

Solución

Puede comprobar el valor de retorno que viene a través de AJAX y si el retiro ha tenido éxito, se puede hacer un display: none en el botón de eliminar.

En cuanto a la documentación del módulo AJAX, creo que tendrá que poner en práctica Drupal.Ajax.plugins.FOO(hook, args). Cuando hook == complete, puede configurar el botón para display: none.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top