Hi. In a drupal 6 custom module I built, I have a menu callback which contains this:

function mymodule_register_confirmation() {
  $content = drupal_get_form('mymodule_newsletter_form');
  echo theme('page', $content);
}

I have the function that returns the form:

function mymodule_newsletter_form(&$form_state) {
  $form = array();

  $form['logo'] = array(
    '#type' => 'markup',
    '#value' => '<div class="logo-header">',
  );
  
  ...

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit')
  );
  
  ...

  return $form;
}

I also built the function for the submit handler of newsletter form:

function mymodule_newsletter_form_submit($form, &$form_state) {
    die('I am in the submit handler!!');
}

The page shows as expected and contains the newsletter form exactly as I want. However, when I click submit button, the submit handler I built never executes.
I even tried adding the following to the function that returns the form:

    $form['submit']['#executes_submit_callback'] = TRUE;
    $form['#submit'][] = 'mymodule_newsletter_form_submit';

What am I doing wrong?

Thanks in advance.

Comments

nevets’s picture

Try replacing 'die' with 'drupal_set_message'

rolandpish’s picture

I did the replace but it still not executing the submit handler.
I even put a watchdog in there and it is not executing either.

rolandpish’s picture

Ahhhh, found the problem!

I had to specify manually a redirect to the form:

$form['#redirect'] = ''; // Redirects to the home page

This way the validate and submit hooks are called appropriately and then it redirects to the home page.

Thanks!!!

Cheers.

msathesh’s picture

I tried the redirect method but it still doesn't work for me. Are you sure that it's what making it to validate?

jaypan’s picture

I'd say his problem lay with echoing the form in the first function, rather than returning it. You don't echo things in Drupal, except in template files.

Contact me to contract me for D7 -> D10/11 migrations.