Кнопка "Добавить еще один элемент" перед полем
Я пытаюсь разместить кнопку "Добавить новый элемент" перед полем неограниченные значения. Также будут работать две кнопки un вверху и внизу поля. В пользовательском модуле добавлена новая кнопка, но она тормозит вызов AJAX для обеих кнопок. Это необходимо для поля сбора данных, но я сомневаюсь, что это имеет значение. Вот как я пытался создать вторую кнопку:
$form['field_fieldname']['add_more2'] = array(
'#type' => 'submit',
'#name' => 'field_fieldname_add_more',
'#value' => t('Add another item'),
'#submit' => array('field_add_more_submit'),
'#ajax' => array('callback'=>'field_add_more_js','wrapper'=>'field-fieldname-add-more-wrapper','effect'=>'fade',),
'#limit_validation_errors' => array(array('field_fieldname','und')),
'#attributes' => array('class'=>array('field-add-more-submit'))
);
1 answers
Функция theme_field_multiple_value_form($переменные) используется (по умолчанию) для создания HTML-кода для многозначного поля. В этой функции кнопка "Добавить еще один элемент" жестко закодирована после таблицы:
$output = '<div class="form-item">';
$output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => $table_id, 'class' => array('field-multiple-table'))));
$output .= $element['#description'] ? '<div class="description">' . $element['#description'] . '</div>' : '';
$output .= '<div class="clearfix">' . drupal_render($add_more_button) . '</div>';
$output .= '</div>';
Итак, что вы могли бы сделать, это переопределить функцию темы и распечатать рендеринг "$add_more_button" перед рендерингом таблицы.
В качестве примечания: если вы хотите переопределить функцию темы с помощью пользовательского модуля , вы можно использовать hook_theme_registry_alter(&$theme_registry)
и установить $theme_registry['field_multiple_value_form']['function']
для вашей настраиваемой функции "тема".