hook_form_alter
- Drupal 5
- Drupal 6
developer/hooks/core.php, строка 712
- Версии
- 5
hook_form_alter($form_id, &$form)
- 6
hook_form_alter(&$form, &$form_state, $form_id)
Позволяет вносить изменения в форму перед её показом.
Одно из популярных использований этого хука — это добавление элементов к форме ноды.
Если вносятся изменения в форму ноды, то объект ноды получается из $form['#node']
.
Заметим, что вместо хука hook_form_alter()
, который вызывается для всех форм, можно использовать также hook_form_FORM_ID_alter()
для внесения изменений в конкретную форму. Однако, стоит помнить, что hook_form_alter()
вызывается последним.
Параметры
&$form
Многомерный массив формы и ее элементов.
&$form_state
Ассоциативный массив, который содержит текущее состояние формы.
$form_id
Строка, представляющая название самой формы. Обычно это название функции, которая генерирует форму (строителя формы).
Связанные темы
Код
<?php
function hook_form_alter(&$form, &$form_state, $form_id) {
if ('node_type_form' == $form_id) {
$form['workflow']['upload'] = array(
'#type' => 'radios',
'#title' => t('Attachments'),
'#default_value' => variable_get('upload_'. $form['#node_type']->type, 1),
'#options' => array(t('Disabled'), t('Enabled')),
);
}
}
?>
Этот хук не выполняется, когда в одном из полей допущена ошибка при вводе и форма показывается снова с сообщением об ошибке.
Чтобы внести изменения в этом случае нужно использовать hook_init().