0

In Drupal 7, customer wants to add a button to the user_profile_form. So in my custom module, I create the button and its companion callback. But while the button appears on the form, I see no evidence the callback is being fired.

function member_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == "user_profile_form") {
     
  $form['send_reset'] = array(
          '#type' => 'button',
          '#prefix' => "<div id='reset-div'>",
          '#suffix' => "</div>",
          '#value' => "Reset member",
          '#ajax' => [
            'callback' => 'member_reset_user',
            'wrapper' => 'reset-div',
            'event' => 'submit', //click, etc
          ],
          '#weight' => -150,
          '#attributes' => array(
            'id' => array('reset-cancel')
          ),
        );
}
function member_reset_user($form, &$form_state) {
  die();  
  try {
    my_user_function():
    watchdog('member', 'user reset', WATCHDOG_NOTICE);
  }
  catch (Exception $e) {
    watchdog('member', 'reset failed', WATCHDOG_ERROR);
  }
  return $form;
}

The html generated by Drupal suggests a submit function.

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

Since I'm not creating new form elements in my callback, just issuing a custom function, I cannot see what I'm doing wrong. I've been looking at this too long.

4
  • I take the AJAX callback isn't invoked as and when you expect. What did you do to be sure the callback is invoked?
    – apaderno
    Apr 18 at 20:50
  • (There is a typo, in that code, and a block of code isn't where it should be. They aren't the reasons for the callback not to be invoked, but the shown code isn't what you are actually using, probably.)
    – apaderno
    Apr 18 at 20:54
  • To make it clear, since the AJAX event isn't set for that button, the default one is mousedown. The AJAX callback is only invoked on that JavaScript event.
    – apaderno
    Apr 18 at 20:58
  • @apaderno Thx for responding. First line of callback has a die() to be certain. Revising goof above. The AJAX event threw me at first, but I reviewed and added event for click, submit. Still not triggering.
    – sam452
    Apr 19 at 14:08

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.