Как избавится от обёртки <div id="field-imja-add-more-wrapper"> у поля формы?

Главные вкладки

Аватар пользователя vbard vbard 29 сентября 2015 в 16:36

Здравствуйте. Продублирую вопрос здесь.
Вывожу поле формы в кастомном шаблоне с помощью

<?php print render($form['field_imja']); ?>
Получаю такую разметку:

<div class="field-type-text field-name-field-imja field-widget-text-textfield form-wrapper" id="edit-field-imja">
  <div id="field-imja-add-more-wrapper">
    <div class="form-item form-type-textfield form-item-field-imja-und-0-value">
      <label for="edit-field-imja-und-0-value">Имя <span class="form-required" title="Это поле обязательно для заполнения.">*</span>
      </label>
      <input class="text-full form-text required" id="edit-field-imja-und-0-value" name="field_imja[und][0][value]" value="" size="60" maxlength="255" type="text">
    </div>
  </div>
</div>

Задача - убрать 2 верних div-a оставив только

<div class="form-item...
Верхний убрал так

function mymodule_preprocess_user_register_form(&$variables) {
  unset($variables['form']['field_imja']['#theme_wrappers']);
}

и остался под ним

<div id="field-imja-add-more-wrapper">
Собственно вопрос - как его убрать? Нашёл вот https://www.drupal.org/node/2226665 но патчить ядро как-то не хочется.

Комментарии

Аватар пользователя boatsman boatsman 29 сентября 2015 в 16:49

там же прописывается и '#theme' => 'field_multiple_value_form', соответственно пишем preprocess функцию mymodule_preprocess_field_multiple_value_form(&$variables), отлавливаем в ней нужное поле и выкидываем '#prefix' и '#suffix'

Аватар пользователя vbard vbard 29 сентября 2015 в 17:30

Спасибо тебе, добрый человек!
сделал так:

function mymodule_preprocess_field_multiple_value_form(&$variables) {
  $field_name = $variables['element']['#field_name'];
  if ($field_name == 'field_familija' || $field_name == 'field_imja' || $field_name == 'field_otchestvo' || $field_name == 'field_telefon') {
    $variables['element']['#prefix'] = '';
    $variables['element']['#suffix'] = '';
    dpm($variables);
  }
}

однако в результате ничего не меняется, обёртка остаётся. Откуда же она берётся?