Всем привет!
Вопрос такой.
Есть ли возможность сделать с помощью вебформ структуру радиобатонов/чекбоксов:
*ответ номер 1
* ответ номер 2
* ответ от ___ до ___ (где ___ - это текстовое поле)
Есть модуль, который позволяет добавить к чекбоксам вариант "другое" с полем ввода, но чтобы внутри ответа - не нашёл. Может кто сталкивался?
Комментарии
https://www.drupal.org/project/select_or_other
Вот, я как раз и сказал, что этот-то модуль я нашёл. Но он вроде как не может вставить внутри ответа несколько инпутов, он может только добавить внизу ответа строку "другое".
Причём, в настройках самого вебформа такое есть.
добавьте нужные поля,и,https://www.drupal.org/project/webform_conditional
Ага. Супер, почти то, что нужно. А можно ли как-то вставить инпуты внутрь лейблов чекбокса?
Создаем модуль - пример. И вписываем код:
<?php /**
// Add element #id for #type 'item'.
// Check for errors and set correct error class.
$output = '<label' . drupal_attributes($attributes) . '>' . "\n";
$prefix = '';
* Implements hook_theme().
*/
function MYMODULE_theme() {
return array(
'checkbox_in_label_wrapper' => array(
'render element' => 'element',
),
);
}
function
MYMODULE_checkbox_in_label_wrapper($variables) {$element = &$variables['element'];
$attributes = isset($element['#attributes']) ? $element['#attributes'] : array();
if(isset($element['#label_attributes'])) {
$attributes = array_merge($attributes, $element['#label_attributes']);
}
if (isset($element['#markup']) && !empty($element['#id'])) {
$attributes['id'] = $element['#id'];
}
if (isset($element['#parents']) && form_get_error($element)) {
$attributes['class'][] = 'error';
}
if (!empty(
$element['#type'])) {$attributes['class'][] = 'form-type-' . strtr($element['#type'], '_', '-');
}
if (!empty($element['#name'])) {
$attributes['class'][] = 'form-item-' . strtr($element['#name'], array(
' ' => '-',
'_' => '-',
'[' => '-',
']' => '',
));
}
// Add a class for disabled elements to facilitate cross-browser styling.
if (!empty($element['#attributes']['disabled'])) {
$attributes['class'][] = 'form-disabled';
}
$suffix = '';
if (isset($element['#field_prefix']) || isset($element['#field_suffix'])) {
// Determine if "#input_group" was specified.
if (!empty($element['#input_group'])) {
$prefix .= '<div class="input-group">';
$prefix .= isset($element['#field_prefix']) ? '<span class="input-group-addon">'
. $element['#field_prefix']
. '</span>' : '';
$suffix .= isset($element['#field_suffix']) ? '<span class="input-group-addon">'
. $element['#field_suffix']
. '</span>' : '';
$suffix .= '</div>';
}
else {
$prefix .= isset($element['#field_prefix']) ? $element['#field_prefix'] : '';
$suffix .= isset($element['#field_suffix']) ? $element['#field_suffix'] : '';
}
}
switch (
$element['#title_display']) {case 'before':
case 'invisible':
$output .= $element['#title'];
$output .= ' ' . $prefix . $element['#children'] . $suffix . "\n";
break;
case
'after':$output .= ' ' . $prefix . $element['#children'] . $suffix;
$output .= $element['#title'];
break;
}
$output .= "</label>\n";return
$output;}
function
MYMODULE_form_YOURFORM_ID_alter(&$form, &$form_state){$form['any_checkbox']['#theme_wrappers'][] = 'checkbox_in_label_wrapper';
}
?>
Нужно заменить MYMODULE на имя, которое вы дали модулю и YOURFORM_ID на id формы, в которой нужно изменить чекбокс.
Решили вопрос? Скажите об этом