Как уже писал ранее, в Form API доступны три вида кнопок:
<input type="submit" />
<input type="button" />
<input type="image" />
Если же в форме нужно использовать элемент <button type="submit">...</button>
, то можно поступить так:
1. Определить шаблон button_button
:
/**
* Implements hook_theme().
*/
function THEMENAME_theme() {
return array(
'button_button' => array(
'render element' => 'element',
),
);
}
/**
* Button theme function.
* @see theme_button().
*/
function THEMENAME_button_button($variables) {
$element = $variables['element'];
$element['#attributes']['type'] = 'submit';
element_set_attributes($element, array('id', 'name', 'value'));
$element['#attributes']['class'][] = 'form-' . $element['#button_type'];
if (!empty($element['#attributes']['disabled'])) {
$element['#attributes']['class'][] = 'form-button-disabled';
}
if (empty($element['#text'])) {
$element['#text'] = $element['#value'];
}
return '<button' . drupal_attributes($element['#attributes']) . '>' . $element['#text'] . '</button>';
}
2. В форме добавить кнопке свойство '#theme_wrappers' => array('button_button')
:
/**
* Form builder.
*/
function mymodule_myform($form, &$form_state) {
...
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Add') . ' <span class="icon icon-add"></span>',
'#theme_wrappers' => array('button_button'),
);
...
}
Написанное актуально для
Drupal 7
Похожие записи
Комментарии
Огромная благодарность за науку, но можно хотя бы намек когда нам это может пригодиться. Спасибо.
в примере есть намёк - вывод иконки в тексте кнопки
если использовать bootstrap в качестве base theme, этот функционал подключается автоматом.
как по мне, таки удобнее button чем input.
Для вывода иконки достаточно сделать так:
И CSS:
ничёси, а в бустрапе то не знают, что можно выводить иконки в бэкграунде
THEMENAME и mymodule какая связь?
Код модуля с перекрытой формой работать будет только в 1й теме?
Здравствуйте, сделал кнопку, но она не срабатывает для самой формы почему то, просто идете перезагрузка страницы.
все равно светится старая кнопка в дебагере:
Добавить комментарий