Кнопка "Добавить еще один элемент" перед полем


Я пытаюсь разместить кнопку "Добавить новый элемент" перед полем неограниченные значения. Также будут работать две кнопки 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'))
  );
 2
Author: kiamlaluno, 2015-05-30

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'] для вашей настраиваемой функции "тема".

 2
Author: Watergate, 2015-06-01 16:55:44