Drupal - Generating <button type="submit"> with the form API
As an addition, just in case someone runs into the same trouble as I did - when using the #markup
or #prefix
/#suffix
trick on a form's actions
group, the submit callback function won't be called at all, unless a submit
type element is present. My workaround was like this:
$form['actions']['submit'] = array
(
'#type' => 'submit',
'#value' => '',
'#attributes' => array( 'style' => array( 'display: none' )), // hide the input field
'#submit' => array( 'my_callback_for_the_form_submit' ),
'#prefix' => '<button type="submit" class="btn btn-primary">Add <i class="fa fa-plus-square-o">',
'#suffix' => '</i></button>',
);
That way you can use custom HTML for submit action groups.
In D7 would recommend:
$form['custom-form'] = array(
'#prefix' => '<button type="submit">',
'#suffix' => '</button>',
'#markup' => '<span>' . t('Login') . '</span>',
);
That way you can replace the #markup in an alter function later if needed, without having to rebuild the button HTML.
To add some custom tag you can use the following snippets:
// Drupal 6.
$form = array();
// Other elements.
$form['custom-form'] = array(
'#value' => '<button type="submit" class="clearfix"><span>Login</span></button>',
);
// Drupal 7.
$form = array();
// Other elements.
$form['custom-form'] = array(
'#markup' => '<button type="submit" class="clearfix"><span>Login</span></button>',
);