Если вы хотите удалить некоторые поля формы, вы реализуете hook_form_FORM_ID_alter()
, то есть хук, который вы уже реализовали, и используете его, чтобы скрыть некоторые поля формы.
$form[$field_id]['#access'] = FALSE;
Таким образом, поле не будет отображаться для пользователя. Я предлагаю использовать это, поскольку именно этот метод создает меньше проблем для других модулей, чем unset($form[$field_id])
; если вы используете это, $form_state['values']
не будет содержать значений для этого поля, и некоторый обработчик проверки или отправки может сообщить об ошибке (например, «необходимо ввести значение для [имя поля]»).
Если вы хотите добавить класс CSS в поле формы, вы можете использовать:
$form[$field_id]['#prefix'] = '<div class="mymodule-custom-class">';
$form[$field_id]['#suffix'] = '</div>';
Это более простой и быстрый способ. Если вам нужно обернуть более одного поля формы, вам следует использовать что-то похожее на следующий код:
$form[$field_id1]['#prefix'] = '<div class="mymodule-custom-class">';
$form[$field_id2]['#suffix'] = '</div>';
В таких случаях обычно требуется добавить стиль CSS в форму, что выполняется с помощью кода, подобного следующему:
$form['#attached']['css'][] = drupal_get_path('module', 'mymodule') . '/mymodule.css';
Вы также можете переместить поля формы в поле формы #container
, как показано в следующем коде:
$form['container_01'] = array(
'#type' => 'container',
'#attributes' => array(
'class' => array('mymodule-custom-class'),
),
);
$form['container_01'][$field_id] = $form[$field_id];
unset($form[$field_id]);
В этом случае поле формы будет обернуто тегом <div>
с классом CSS, установленным для контейнера. С этим связано то, что поля перемещены от того места, где они были; вам нужно отрегулировать их вес, чтобы потом появиться там, где они были раньше. Если вы используете этот метод, вы должны быть уверены, что ваш модуль последним изменит форму, иначе у модулей, которые ожидают найти $form[$field_id]
, будут некоторые проблемы; это не относится к обработчикам форм, за исключением случаев, когда для $form[$field_id]['#tree']
установлено значение TRUE
.