# Drupal 7: Add markup to form during validation

I have a custom validator on a webform. When a person enters an address, I validate it. When the address is not right, I set an error in the validation function. This is all going well. But now I want to give the visitor suggestions when he enter a wrong address. This should be done by giving the suggestion in a markup underneath the address input.

I allready set up an empty markup field in the webform, now I just want to put information in it during validation. How is this possible. If you need any dpm or printout let me know please.

In your validate you can set a variable in the $form_state that tells if the validation failed or not: function webform_validate_handler(&$form, &$form_state) { if ($mail_invalid) {
$form_state['mail_invalid'] = TRUE; } else {$form_state['mail_invalid'] = FALSE;
}
}


Then in your form, you can check for empty($form_state['mail_invalid']) and show the markup when the empty check returns false. function hook_form_alter(&$form, &$form_state,$form_id) {
...
if (!empty($form_state['mail_invalid']) {$form['markup'] = ...;
}
}

• how can I alter the form then ? hook_form_alter is called BEFORE validation handler, and if I change any varible in $form in the validation hook, nothing happens. – Nealv Mar 18 '12 at 18:56 • @Nealv You didn't read my answer properly, I have updated my answer to clearly show what I'm talking about. You need to check $form_state like I explained. – googletorp Mar 18 '12 at 20:21
• I understand what you are saying, but the "validation" hook is called AFTER the form alter. so when the form_alter is executed, \$form_state['mail_invalid'] will be NULL, because you set it afterwards. right – Nealv Mar 18 '12 at 22:40
• @Nealv That is why you use the empty() to check it. First time around it won't exist so !empty() == FALSE in order words the markup isn't added to the form. If the validation fails, the form is rebuild, but this time !empty() == TRUE so the markup is shown. This is really quite simple. – googletorp Mar 19 '12 at 12:22
• I understand what you are saying, but there is no first and second time. flow is like this: hook_form_alter -> hook_validate -> render. So after the validation I cant change anything in the form, and during neither because the form is not a reference but a copy. Is it possible to chat ? – Nealv Mar 19 '12 at 15:17