Справочник Forms API

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

Этот документ является полным справочник к Forms API Друпала. Если вас интересует пошаговая интрукция о том, как создавать собственные формы, вам лучше начать с быстрого введения в Forms API.

Перейти к: параметрам | значениям по-умолчанию | элементам

Элементы формы

Легенда:
X = используется с этим элементом
- = не используется с этим элементом

#type checkbox checkboxes date fieldset file password radio radios select textarea textfield weight
#access X X X X X X X X X X X X
#ahah X - - - - X X - X X X -
#after_build X X X X X X X X X X X X
#attributes X X X X X X X X X X X X
#autocomplete_path - - - - - - - - - - X -
#collapsed - - - X - - - - - - - -
#collapsible - - - X - - - - - - - -
#cols - - - - - - - - - X - -
#default_value X X X - - - X X X X X X
#delta - - - - - - - - - - - X
#description X X X X X X X X X X X X
#disabled X X X - X X X X X X X X
#element_validate X X X X X X X X X X X X
#field_prefix - - - - - - - - - - X -
#field_suffix - - - - - - - - - - X -
#maxlength - - - - - - - - - - X -
#multiple - - - - - - - - X - - -
#options - X - - - - - X X - - -
#parents X X X X X X X X X X X X
#prefix X X X X X X X X X X X X
#required X X X - - X X X X X X X
#return_value X X - - - - X X - - - -
#rows - - - - - - - - - X - -
#size - - - - - - - - X - X -
#suffix X X X X X X X X X X X X
#theme X X X X X X X X X X X X
#title X X X X X X X X X X X X
#tree X X X X X X X X X X X X
#weight X X X X X X X X X X X X

Особые элементы

#type button image_button submit form hidden markup item value
#after_build X X X X X X X -
#ahah X X X - - - - -
#action - - - X - - - -
#attributes X X X X X X X -
#button_type X X X - - - - -
#default_value - - - - X - - -
#description - - - - - - X -
#element_validate X X X - X X X X
#executes_submit_callback X X X - - - - -
#method - - - X - - - -
#parents X X X - X - - X
#prefix X X X X X X X -
#redirect - - - X - - - -
#required - - - - X - - -
#src - X - - - - - -
#submit X X X X - - - -
#suffix X X X X X X X -
#theme X X X X X X X -
#title - - - - - - X -
#tree X X X X X - - X
#validate X X X X - - - -
#value X X X - - X X X
#weight X X X - - X X -

Значения по-умолчанию

Каждый элемент автоматически получает эти значения (см. _element_info):

Список умолчаний для различных элементов (см. system_elements()):

 

Элементы

Жирным шрифтом помечены параметры, которые, в большинстве случаев, обязательно стоит заполнить при создании элемента.

button

Описание: Обычная кнопка. При нажатии, форма передается в обработчик Друпала, где она проходит валидацию и перестройку. Submit-обработчик формы не выполняется по-умолчанию, но можно использовать #executes_submit_callback, чтобы это изменить.

Параметры: #ahah, #attributes, #button_type (по-умолчанию: submit), #executes_submit_callback (по-умолчанию: FALSE), #name (по-умолчанию: op), #prefix, #suffix, #type. #value, #weight

Пример использования (node.module):

<?php
$form['preview'] = array(
  '#type' => 'button', 
  '#value' => t('Preview'), 
  '#weight' => 19,
);
?>

checkbox

Описание: Чекбокс (галочка).

Параметры: #ahah, #attributes, #default_value, #description, #prefix, #required, #return_value (по-умолчанию: 1), #suffix, #title, #type. #weight

Пример использования (contact.module):

<?php
$form['copy'] = array(
  '#type' => 'checkbox', 
  '#title' => t('Send me a copy.'),
);
?>

checkboxes

Описание: Группа чекбоксов. Здесь, #options — это ассоциативный массив. При обработке, форма возвратит в параметре #return_value значение, которое находится в ключах массива. На самой форме отображаются значения этого массива. Массив #options не может содержать элементов с ключем равным  .

Параметры: #attributes, #default_value, #description, #options, #prefix, #required, #suffix, #title, #tree (по-умолчанию: TRUE), #type. #weight

Пример использования (node.module):

<?php
$form['node_options_'. $node->type] = array(
  '#type' => 'checkboxes', 
  '#title' => t('Default options'), 
  '#default_value' => variable_get('node_options_'. $node->type, array('status', 'promote')),
  '#options' => array(
    'status' => t('Published'), 
    'moderate' => t('In moderation queue'), 
    'promote' => t('Promoted to front page'),
    'sticky' => t('Sticky at top of lists'),
    'revision' => t('Create new revision'),
  ),
  '#description' => t('Users with the <em>administer nodes</em> permission will be able to override these options.'),
);
?>

date

Описание: Поле выбора даты. В параметре #default_value будет стоять сегодняшняя дата, если не указать другого. Форматом параметров #default_value и #return_value является массив с ключами 'year', 'month', and 'day': array('year' => 2007, 'month' => 2, 'day' => 15)

Параметры: #attributes, #default_value, #description, #prefix, #required, #suffix, #title, #type. #weight

Пример использования (profile.module):

<?php
$fields[$category][$field->name] = array(
  '#type' => 'date', 
  '#title' => check_plain($field->title), 
  '#default_value' => $edit[$field->name], 
  '#description' => _profile_form_explanation($field), 
  '#required' => $field->required
);
?>

fieldset

Описание: Группа элементов. Служит только для группировки нескольких элементов в одну панельку (те, что могут разворачиваться и схлопываться)

Параметры: #attributes, #collapsed (по-умолчанию: FALSE), #collapsible (по-умолчанию: FALSE), #description, #prefix, #suffix, #title, #type. #weight

Пример использования (contact.module):

<?php
$form['contact'] = array(
  '#type' => 'fieldset', 
  '#title' => t('Contact settings'), 
  '#weight' => 5, 
  '#collapsible' => TRUE, 
  '#collapsed' => FALSE,
);
?>

file

Описание: Поле для загрузки файла.

Примечание: следует включать $form['#attributes'] = array('enctype' => "multipart/form-data"); в описание формы. См. http://drupal.org/node/111782.

Примечание: Параметр #required этим элементом не поддерживается (его установка в TRUE будет всегда вызывать ошибки валидации). Вместо этого, используйте собственную функцию валидации для проверки массива $_FILES (но с #required должен быть FALSE). Кроме того, вам нужно самостоятельно позаботиться о выводе звездочки или другой пометки «обязательности» поля, если это необходимо. Это можно реализовать темизацией элемента (см #theme).

Параметры: #attributes, #description, #prefix, #size (по-умолчанию: 60), #suffix, #title, #type. #weight

Пример использования (upload.module):

<?php
$form['new']['upload'] = array(
  '#type' => 'file', 
  '#title' => t('Attach new file'), 
  '#size' => 40,
);
?>

form

Описание: Форма.

Параметры: #action (по-умолчанию: request_uri()), #attributes, #method (по-умолчанию: 'post'), #prefix, #submit, #suffix, #theme, #validate

Пример использования:

N/A

hidden

Описание: Скрытое поле, которое не отображается пользователю на форме.

Параметры: #prefix, #suffix, #type, #value

Пример использования (block.module):

<?php
$form['bid'] = array('#type' => 'hidden', '#value' => $bid);
?>

image_button

Описание: Кнопка-картинка. Функционал аналогичен кнопке отправки формы.

Параметры: #ahah, #attributes, #button_type (по-умолчанию: 'submit'), #executes_submit_callback (по-умолчанию: TRUE), #name (по-умолчанию: 'op'), #prefix, #src, #suffix, #submit, #type. #value, #weight

markup

Описание: Элемент разметки. Служит для разметки внутри форм. При создании этого элемента нет нужды заполнять параметр #type = 'markup', так как это тип — по-умолчанию для всех элементов.

Обратите внимание: этот элемент не обертывается в html-теги вообще, поэтому не удивляйтесь если вдруг внутренние элементы этого поля криво вылезут на форме.

Параметры: #attributes, #prefix (по-умолчанию: ''), #suffix (по-умолчанию: ''), #type. #value, #weight

Пример использования (contact.module):

<?php
$form['contact_information'] = array(
  '#value' => variable_get('contact_form_information', t('You can leave us a message using the contact form below.')),
);
?>

item

Описание: Поле с неменяющимся значением, заголовком и описанием.

Примечание: так как это поле «только для чтения», установка параметра #required повлияет только на вид этого поля (красная звездочка подле заголовка).

Параметры: #attributes, #description, #prefix (по-умолчанию: ''), #required, #suffix (по-умолчанию: ''), #title, #type, #value, #weight

Пример использования (contact.module):

<?php
$form['from'] = array(
  '#type' => 'item',
  '#title' => t('From'),
  '#value' => $user->name .' &lt;'. $user->mail .'&gt;',
);
?>

password

Описание: Однострочное текстовое поле, в котором символы отображаются звездочками.

Параметры: #ahah, #attributes, #description, #maxlength (по-умолчанию: 30), #prefix, #required, #size (по-умолчанию: 64), #suffix, #title, #type. #weight

Пример использования (user.module):

<?php
$form['pass'] = array(
  '#type' => 'password', 
  '#title' => t('Password'), 
  '#maxlength' => 64, 
  '#size' => 15,
);
?>

radio

Описание: Переключатель («круглая галочка»).

Параметры: #ahah, #attributes, #default_value, #description, #prefix, #required, #suffix, #title, #type. #weight

Пример использования:

N/A

radios

Описание: Группа переключателей.

Параметры: #attributes, #default_value, #description, #options, #prefix, #required, #suffix, #title, #type. #weight

Пример использования (comment.module):

<?php
$form['posting_settings']['comment_preview'] = array(
  '#type' => 'radios', 
  '#title' => t('Preview comment'), 
  '#default_value' => variable_get('comment_preview', 1), 
  '#options' => array(t('Optional'), t('Required')),
);
?>

select

Описание: Простой или выпадающий список.

Параметры: #ahah, #attributes, #default_value, #description, #multiple, #options, #prefix, #required, #suffix, #title, #type. #weight

Пример использования (system.module):

<?php
$form['feed']['feed_item_length'] = array(
  '#type' => 'select', 
  '#title' => t('Display of XML feed items'), 
  '#default_value' => variable_get('feed_item_length','teaser'),
  '#options' => array(
    'title' => t('Titles only'), 
    'teaser' => t('Titles plus teaser'), 
    'fulltext' => t('Full text'),
  ),
  '#description' => t('Global setting for the length of XML feed items that are output by default.'),
);
?>

submit

Описание: Кнопка отправки формы.

Параметры: #ahah, #attributes, #button_type (по-умолчанию: 'submit'), #executes_submit_callback (по-умолчанию: TRUE), #name (по-умолчанию: 'op'), #prefix, #suffix, #type. #value, #weight

Пример использования (locale.module):

<?php
$form['submit'] = array('#type' => 'submit', '#value' => t('Import'));
?>

textarea

Описание: Многострочное текстовое поле.

Параметры: #ahah, #attributes, #cols (по-умолчанию: 60), #default_value, #description, #prefix, #required, #suffix, #title, #type. #rows (по-умолчанию: 5), #weight

Пример использования (forum.module):

<?php
$form['body'] = array(
  '#type' => 'textarea', 
  '#title' => t('Body'), 
  '#default_value' => $node->body, 
  '#required' => TRUE
);
?>

textfield

Описание: Однострочное тестовое поле.

Параметры: #ahah, #attributes, #autocomplete_path (по-умолчанию: FALSE), #default_value, #description, #field_prefix, #field_suffix, #maxlength (по-умолчанию: 128), #prefix, #required, #size (по-умолчанию: 60), #suffix, #title, #type. #weight

Пример использования (forum.module):

<?php
$form['title'] = array(
  '#type' => 'textfield', 
  '#title' => t('Subject'), 
  '#default_value' => $node->title, 
  '#size' => 60, 
  '#maxlength' => 128, 
  '#required' => TRUE,
);
?>

value

Описание: Значение формы, используемое для внутренних целей. Внешне никак не отображается на форме.

Параметры: #type, #value

Пример использования (node.module):

<?php
$form['vid'] = array('#type' => 'value', '#value' => $node->vid);
?>

weight

Описание: Поле для выбора веса

Параметры: #attributes, #delta (по-умолчанию: 10), #default_value, #description, #prefix, #required, #suffix, #title, #type. #weight

Пример использования (menu.module):

<?php
$form['weight'] = array(
  '#type' => 'weight', 
  '#title' => t('Weight'), 
  '#default_value' => $edit['weight'], 
  '#delta' => 10, 
  '#description' => t('Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top.'),
);
?>

Параметры

#access

Описание: Будет ли элемент доступен на форме. Если равен FALSE, элемент не будет выведен на форме вообще.

Допустимые значения: TRUE или FALSE.

#action

Используется в: form

Описание: Адрес, на который будет отправлена форма (HTML аттрибут action).

Допустимые значения: Внутренний путь

Пример использования (comment.module):

<?php
$form['#action'] = url('comment/reply/'. $edit['nid']);
?>

#after_build

Массив названий функций, которые будут вызваны после построения формы (например, для обработки предпросмотра ноды).

Пример использования (system.module):

<?php
$form['files']['file_directory_path'] = array(
  '#type' => 'textfield',
  '#title' => t('File system path'),
  '#default_value' => file_directory_path(),
  '#maxlength' => 255,
  '#description' => t('A file system path where the files will be stored. This directory has to exist and be writable by Drupal. If the download method is set to public this directory has to be relative to Drupal installation directory, and be accessible over the web. When download method is set to private this directory should not be accessible over the web. Changing this location after the site has been in use will cause problems so only change this setting on an existing site if you know what you are doing.'),
);
$form['#after_build'] = array('system_check_directory');
 
...
 
function system_check_directory($form, $form_element) {
  file_check_directory($form_element['#value'], FILE_CREATE_DIRECTORY, $form_element['#parents'][0]);
  return $form_element;
}
?>

#ahah

Используется в: button, checkbox, image button, password, radio, select, submit, textarea, textfield

Массив, который определяет вид и поведение элемента с AHAH функциональностью.

Параметр #ahah обеспечивает AHAH (Асинхронный HTML и HTTP) — родственный AJAX'у подходу для динамического обновления веб-страниц. AHAH прост и функционален — ответы сервера возвращают HTML код, который вcтавляется в нужное место страницы.

Корректная работа AHAH обеспечивается исполнением этих шагов:

  1. Друпал конструирует и выводит элемент с #ahah параметрами. К странице автоматически цепляется JavaScript файл misc/ahah.js.
  2. ahah.js ищет на странице все элементы, у которых выставлен параметр #ahah['path'] и навешивает свой обработчик на событие #ahah['event'] элемента.
  3. Когда происходит данное событие (напр. 'click'), обработчик отсылает запрос на путь, указанный в #ahah['path'] (это путь из меню Друпала).
  4. Друпал генерирует HTML и отдает его этому запросу. Пока все это происходит, пользователь видит на форме прогресс-бар или анимированную иконку, что определяется в #ahah['progress'].
  5. Когда ahah.js получает ответ от друпала, он вставляет возвращенный HTML в #ahah['wrapper']. Метод вставки результата на страницу определяется в #ahah['method'].

#ahah['effect']

Описание: Определяет эффект, используемы для вставки контента из AHAH запроса.

Допустимые значения: Строка. Возможные значения: 'none' (по-умолчанию), 'fade', 'slide'. При установленной JQuery библиотеке Interface elements, любые эффекты с названием effectToggle могут быть также использованы.

Пример использования (poll.module):

<?php 
  $form['choice_wrapper']['poll_more'] = array(
    '#type' => 'submit',
    '#value' => t('More choices'),
    '#description' => t("If the amount of boxes above isn't enough, click here to add more choices."),
    '#weight' => 1,
    '#submit' => array('poll_more_choices_submit'), // If no javascript action.
    '#ahah' => array(
      'path' => 'poll/js',
      'wrapper' => 'poll-choices',
      'method' => 'replace',
      'effect' => 'fade',
    ),
?>

#ahah['event']

Описание: Когда это событие происходит, Друпал отправляет HTTP запрос посредством JavaScript к пути, указанному в #ahah['path'].

Допустимые значения: Строка. Возможные значения: 'click', 'blur', 'change'. Имейте в виду, что #ahah['event'] не обязательно заполнять, так как каждому элементу присваивается свое событие по-умолчанию.

#ahah['method']

Описание: Определяет метод вставки возвращенного запросом HTML кода в селекторе #ahah_wrapper. Если ничего не выставлено, возвращенный HTML просто заменяет содержание элемента с аттрибутом id равным #ahah_wrapper. Кроме того, можно использовать любые методы операций с DOM в JQuery.

Допустимые значения: Строка. Возможные значения: 'replace' (по-умолчанию), 'after', 'append', 'before', 'prepend'.

#ahah['path']

Описание: Если выставлен, параметр включает AHAH-поведение элемента. Значение этого параметра — друпаловский путь, с коллбэк-функцией, генерирующей HTML код и возвращающей этот код Друпалу. Результат будет помещен в место на странице, которое соответствует селектору #ahah['wrapper'].

Допустимые значения: Строка, содержащая путь в меню Друпала.

Пример использования (upload.module):

<?php
/**
* Implementation of hook_menu().
*/
function upload_menu() {
  $items['upload/js'] = array(
    'page callback' => 'upload_js',
    'access arguments' => array('upload files'),
    'type' => MENU_CALLBACK,
  );
  ...
  return $items;
}
 
...
 
function _upload_form($node) {
  ...
    $form['new']['attach'] = array(
      '#type' => 'submit',
      '#value' => t('Attach'),
      '#name' => 'attach',
      '#ahah' => array(
        'path' => 'upload/js',
        'wrapper' => 'attach-wrapper',
        'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
      ),
      '#submit' => array('node_form_submit_build_node'),
    );
  ...
return $form;
?>

В этом примере #ahah['path'] заполнено путем 'upload/js', который определяется в этом же модуле (upload_menu). При обращении к 'upload/js', будет выполнена функция upload_js, которая сгенерирует HTML и возвратит его запрашивающей странице.

#ahah['progress']

Описание: Выбирает прогресс-бар или анимированную иконку (опционально, текст), которые будут показываться во время ожидания ответа от AHAH запроса.

Допустимые значения: Массив.

Возможные ключи массива: 'type', 'message', 'url', 'interval'.

Возможные значения:

  • #ahah['progress']['type'] Строка. Возможные значения: 'throbber' (по-умолчанию), 'bar'.
  • #ahah['progress']['message'] Строка. Опциональное сообщение; должно быть пропущено через t().
  • #ahah['progress']['url'] Строка. Опциональный коллбэк для выяснения позиции прогресс-бара (по описанию из progress.js). Используется если 'type' равен 'progress'.
  • #ahah['progress']['interval'] Строка. Интервал запросов обновления прогресс-бара (по описанию из progress.js). Используется если установлен 'url' и 'type' равен 'progress'.

Пример использования: см. выше пример из upload.module

#ahah['wrapper']

Описание: Этот параметр определяет значение HTML аттрибута id, в элемент с которым (обычно <div>), будет вставлен результат AHAH запроса.

Допустимые значения: Строка, содержащая аттрибут id HTML элемента, который находится на данной странице.

Пример использования (upload.module):

<?php
  $form['new']['attach'] = array(
    '#type' => 'submit',
    '#value' => t('Attach'),
    '#name' => 'attach',
    '#ahah' => array(
      'path' => 'upload/js',
      'wrapper' => 'attach-wrapper',
      'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
    ),
    '#submit' => array('node_form_submit_build_node'),
  );
?>

#attributes

Используется в: button, checkbox, checkboxes, date, fieldset, file, form, markup, password, radio, radios, select, submit, textarea, textfield, weight

Описание: Используется для установки дополнительных HTML-атрибутов, таких как "class".

Допустимые значения: Любые HTML атрибуты, которые не затрагиваются остальными параметрами (class (для элементов), enctype (для форм)).

Пример использования (search.module):

<?php
$form['#attributes'] = array('class' => 'search-form');
?>

#autocomplete_path

Используется в: textfield

Описание: Путь к AJAX обработчику, выводящему варианты автозаполнения.

Пример использования (node.module):

<?php
$form['author']['name'] = array(
  '#type' => 'textfield', 
  '#title' => t('Authored by'), 
  '#maxlength' => 60, 
  '#autocomplete_path' => 'user/autocomplete', 
  '#default_value' => $node->name, 
  '#weight' => -1,
);
?>

#built

Используется в: form

Описание: Используется для определения, построена форма или нет.

Допустимые значения: TRUE или FALSE

Пример использования: ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ. См. функцию _form_builder в form.inc.

#button_type

Используется в: button, submit

Описание: Устанавливает CSS класс кнопки (form-button_type)

Допустимые значения: submit, ???

Пример использования: (system.module):

<?php
$type['submit'] = array(
  '#input' => TRUE, 
  '#name' => 'op', 
  '#button_type' => 'submit', 
  '#submit' => TRUE,
);
?>

#collapsed

Используется в: fieldset

Описание: Указывает будет ли развернута группа элементов по-умолчанию. Смотрите также параметр #collapsible.

Допустимые значения: TRUE или FALSE

Пример использования (block.module) :

<?php
$form['block'] = array(
  '#type' => 'fieldset', 
  '#title' => t('Block configuration'), 
  '#weight' => 3, 
  '#collapsible' => TRUE, 
  '#collapsed' => FALSE, 
  '#tree' => TRUE,
);
?>

#collapsible

Используется в: fieldset

Описание: Задает возможность группе сворачиваться при помощи JavaScript. Смотрите также параметр #collapsed.

Допустимые значения: TRUE или FALSE

Пример использования (block.module):

<?php
$form['block'] = array(
  '#type' => 'fieldset', 
  '#title' => t('Block configuration'), 
  '#weight' => 3, 
  '#collapsible' => TRUE, 
  '#collapsed' => FALSE, 
  '#tree' => TRUE,
);
?>

#cols

Используется в: textarea

Описание: Определяет количество колонок в текстовом поле (смотрите также параметр #rows)

Допустимое значение: Положительное число

Пример использования (aggregator.module):

<?php
$form['description'] = array(
  '#type' => 'textarea', 
  '#title' => t('Description'), 
  '#default_value' => $edit['description'], 
  '#cols' => 60, 
  '#rows' => 5,
);
?>

#default_value

Используется в: button, checkbox, checkboxes, date, file, markup, password, radio, radios, select, submit, textarea, textfield, weight

Описание: Значение поля по-умолчанию. Не путать с #value!

.

Допустимые значения: Разные

Допустимые значения: Mixed

Пример использования (forum.module):

<?php
$form['body'] = array(
  '#type' => 'textarea', 
  '#title' => t('Body'), 
  '#default_value' => $node->body, 
  '#required' => TRUE,
);
?>

#delta

Используется в: weight

Описание: Число весов, из которых можно выбирать в поле выбора весов. К примеру, если $delta => 10, в поле выбора весов будут значения от -10 до 10.

Допустимое значение: Положительное число

Пример использования (menu.module):

<?php
$form['weight'] = array(
  '#type' => 'weight', 
  '#title' => t('Weight'), 
  '#default_value' => $edit['weight'], 
  '#delta' => 10, 
  '#description' => t('Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top.'),
);
?>

#description

Используется в: checkbox, checkboxes, date, fieldset, file, markup, password, radio, radios, select, textarea, textfield, weight

Описание: Текстовое описание или подсказка к элементу формы. Настоятельно рекомендуется сперва помещать эти значения в функцию t() для того, чтобы не терять возможности локализации формы.

Допустимые значения: Разные

Пример использования (menu.module):

<?php
$form['weight'] = array(
  '#type' => 'weight', 
  '#title' => t('Weight'), 
  '#default_value' => $edit['weight'], 
  '#delta' => 10, 
  '#description' => t('Optional. In the menu, the heavier items will sink and the lighter items will be positioned nearer the top.'),
);
?>

#disabled

Используется в: checkbox, checkboxes, date, file, password, radio, radios, select, textarea, textfield, weight

Описание: Выключает (дизактивирует) элемент формы.

Допустимые значения: TRUE или FALSE

Пример использования (system.module):

<?php
      if (isset($disabled[$name])) {
        $form['theme_settings'][$name]['#disabled'] = TRUE;
      }
?>

#element_validate

Используется в: любых элементах

Описание: Массив функций валидации значения элемента. Эти функции должны вызывать form_error() или form_set_error() если поле не проходит валидацию.

Допустимые значения: Массив названий функций.

Эти функции должны принимать в параметрах сам элемент и состояние формы:

function myelement_validate($element, &$form_state) {
   if (empty($element['#value']) {
     form_error($element, t('This field is required.'));
   }
}    

Пример использования (filter.module):

<?php
  if (count($formats) > 1) {
    $form = array(
      '#type' => 'fieldset',
      '#title' => t('Input format'),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
      '#weight' => $weight,
      '#element_validate' => array('filter_form_validate'),
    );
   ...
?>

#error

INTERNAL. Indicates whether or not a form element has been flagged as having an error.

#executes_submit_callback

Используется в: button, submit, image_button

Описание: Определяет, будет ли кнопка отправлять форму на submit-обработчик.

Допустимые значения: TRUE или FALSE

#id

ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ. Устаналивает HTML аттрибут id элемента.

#input

ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ. Определяет, возможен ли пользовательский ввод данных в элементе.

#field_prefix

Используется в: textfield

Описание: Текст или код, который помещается прямо перед текстовым полем.

Допустимые значения: Разные

Пример использования (system.module):

<?php
$form['site_403'] = array(
  '#type' => 'textfield',
  '#title' => t('Default 403 (access denied) page'),
  '#default_value' => variable_get('site_403', ''),
  '#size' => 40,
  '#description' => t('This page is displayed when the requested document is denied to the current user. If unsure, specify nothing.'),
  '#field_prefix' => url(NULL, NULL, NULL, TRUE) . (variable_get('clean_url', 0) ? '' : '?q=')
);
?>

#field_suffix

Используется в: textfield

Описание: Текст или код, который помещается сразу за текстовым полем.

Допустимые значения: Разные

Пример использования (system.module):

<?php
$form['settings_general']['upload_usersize_default'] = array(
  '#type' => 'textfield',
  '#title' => t('Default total file size per user'),
  '#default_value' => $upload_usersize_default,
  '#size' => 5,
  '#maxlength' => 5,
  '#description' => t('The default maximum size of all files a user can have on the site.'),
  '#field_suffix' => t('MB')
);
?>

#maxlength

Используется в: textfield

Описание: Максимальное количество символов, которые сможет принять текстовое поле.

Допустимое значение: Положительное число

Пример использования (forum.module):

<?php
$form['title'] = array(
  '#type' => 'textfield', 
  '#title' => t('Subject'), 
  '#default_value' => $node->title, 
  '#size' => 60, 
  '#maxlength' => 128, 
  '#required' => TRUE,
);
?>

#method

Используется в: form

Описание: Метод отправки формы (HTML аттрибут формы method).

Допустимые значения: GET или POST. По-умолчанию — POST.

Пример использования (node.module):

<?php
$form['#method'] = 'post';
?>

#multiple

Используется в: select

Описание: Определяет возможность выбора более одого значения в элементе.

Допустимые значения: TRUE или FALSE

Пример использования (taxonomy.module):

<?php
return array(
  '#type' => 'select', 
  '#title' => $title, 
  '#default_value' => $value, 
  '#options' => $options, 
  '#description' => $description, 
  '#multiple' => $multiple, 
  '#size' => $multiple ? min(12, count($options)) : 0,
  '#weight' => -15,
);
?>

#name

ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ. Устаналивает HTML аттрибут name элемента.

#options

Используется в: checkboxes, radios, select

Описание: Варианты выбора в списках (выпадающих, обычных, а также списках чекбоксов и переключателей).

Допустимые значения: Массив вида array(t('Значение 1'), t('Значение 2')) или array('return_value1' =&gt; t('Значение 1'), 'return_value2' =&gt; t('Значение 2')) если элемент должен возвращать определенные значения.

Пример использования (comment.module):

<?php
$form['posting_settings']['comment_preview'] = array(
  '#type' => 'radios', 
  '#title' => t('Preview comment'), 
  '#default_value' => variable_get('comment_preview', 1), 
  '#options' => array(t('Optional'), t('Required')),
);
?>

#parents

Используется в: All

Описание: Определяет «родителя» элемента. Смотрите статью#tree and #parents для получения деталей.

Допустимые значения: Массив имен элементов.

Пример использования (comment.module):

<?php
$form['admin']['status'] = array(
  '#type' => 'radios', 
  '#parents' => array('status'), 
  '#title' => t('Status'), 
  '#default_value' => $status, 
  '#options' => array(t('Published'), t('Not published')), 
  '#weight' => -1,
);
?>

#prefix

Используется в: button, checkbox, checkboxes, date, fieldset, file, form, hidden, markup, password, radio, radios, select, submit, textarea, textfield, weight

Описание: Текст или код, который отобразится перед элементом. Смотрите также #suffix.

Допустимые значения: Разные

Пример использования (poll.module):

<?php
$form['choice'] = array(
  '#type' => 'fieldset', 
  '#title' => t('Choices'), 
  '#prefix' => '<div class="poll-form">', 
  '#suffix' => '</div>', 
  '#tree' => TRUE,
);
?>

#printed

ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ. Определяет, отрисован ли элемент уже.

#process

Описание: Массив функций (каждая вместе с массивом аргументов), которые будут вызваны при процессинге (обработке) формы. Часто используется для <a href="#ahah">#ahah</a> обработчиков. Используя этот параметр, модули могут навешивать дополнительные действия над элементом, например, тип "radios" расширяется дополнительными переключателями, используя функции процессинга.

Допустимые значения: Массив масивов

Пример использования (system.module) в <a href="/api/function/system_elements/6">system_elements()</a>:

<?php
$type['radios'] = array(
  '#input' => TRUE,
  '#process' => array('expand_radios' => array())
);
?>

В этом примере, вызывается без аргументов функция <a href="/api/function/expand_radios/6">expand_radios()</a>. Эта функция добавляет новые элементы типа radio посредством добавления значений в массив #options обрабатываемого элемента (radios).

#processed

ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ. Определяет, обработана ли форма или элемент.

#redirect

Используется в: form

Описание: Адрес, на который попадает пользователь после обработки формы. Это значение по-умолчанию возвращается обработчиком формы (начиная с шестого Друпала, в $form_state['redirect']), но вы можете задавать произвольное значение используя параметр #redirect в hook_form_alter(). Смотрите также #action.

p>Допустимые значения: Внутренний путь или массив аргументов для функции url(). параметр также может быть установлен в FALSE, что приведет к отмене редиректа после обработки формы.

Пример использования (locale.inc):

<?php
$form['#redirect'] = 'node';
?> 
 
<?php
$form['#redirect'] = array('user/login', 'destination=node');
?>
 
<?php
$form['#redirect'] = FALSE;
?>

#required

Используется в: checkbox, checkboxes, date, file, password, radio, radios, select, textarea, textfield, weight

Описание: Определяет обязательность элемента. Если параметр выставлен, то при валидации формы, элемент автоматически проверяется на пустое значение. Поля загрузки файлов не могут быть обязательными.

Допустимые значения: TRUE или FALSE

Пример использования (forum.module):

<?php
$form['title'] = array(
  '#type' => 'textfield', 
  '#title' => t('Subject'), 
  '#default_value' => $node->title, 
  '#size' => 60, 
  '#maxlength' => 128, 
  '#required' => TRUE,
);
?>

#return_value

Используется в: checkbox, checkboxes, radio, radios

Описание: Значение, которое должен возвращать элемент, когда выбран.

Допустимые значения: Разные

Пример использования (poll.module):

<?php
$form['morechoices'] = array(
  '#type' => 'checkbox', 
  '#title' => t('Need more choices'), 
  '#return_value' => 1, 
  '#default_value' => 0, 
  '#description' => t("If the amount of boxes above isn't enough, check this box and click the Preview button below to add some more."),
);
?>

Let's make this remark short: #

#rows

Используется в: textarea

Описание: Определяет количество колонок в текстовом поле (смотрите также параметр #cols)

Допустимое значение: Положительное число

Пример использования (aggregator.module):

<?php
$form['description'] = array(
  '#type' => 'textarea', 
  '#title' => t('Description'), 
  '#default_value' => $edit['description'], 
  '#cols' => 60, 
  '#rows' => 5,
);
?>

#size

Используется в: select, textfield

Описание: Ширина текстового поля (в символах) или высота списка (в строках).

Допустимое значение: Положительное число

Пример использования (comment.module):

<?php
        $form['admin']['homepage'] = array(
          '#type' => 'textfield',
          '#title' => t('Homepage'),
          '#maxlength' => 255,
          '#size' => 30,
          '#default_value' => $edit['homepage'],
        );
?>

#src

Используется в: image_button

Описание: URL картинки кнопки.

Допустимые значения: An URL.

#submit

Используется в: form, button, submit, image_button

Описание: Задает массив названий функций, которые выполняются при отправке всей формы или отправке формы определенной кнопкой.

Допустимые значения: Массив имен функций

Пример использования (menu.module) (для всей формы):

<?php
function menu_form_alter(&$form, $form_state, $form_id) {
   ...  
    $form['menu']['parent'] = array(
      '#type' => 'select',
      '#title' => t('Parent item'),
      '#default_value' => $default,
      '#options' => $options,
      '#attributes' => array('class' => 'menu-title-select'),
    );
    $form['#submit'][] = 'menu_node_form_submit';
}
?>

Пример использования (menu.module) (определенная кнопка):

<?php
    $form['menu_name'] = array('#type' => 'value', '#value' => $menu['menu_name']);
    $form['#insert'] = FALSE;
    $form['delete'] = array(
      '#type' => 'submit',
      '#value' => t('Delete'),
      '#access' => !in_array($menu['menu_name'], menu_list_system_menus()),
      '#submit' => array('menu_custom_delete_submit'),
      '#weight' => 10,
    );
?>

#suffix

Используется в: button, checkbox, checkboxes, date, fieldset, file, form, hidden, markup, password, radio, radios, select, submit, textarea, textfield, weight

Описание: Текст или код, который отобразится после элемента. Смотрите также #prefix.

Допустимые значения: Разные

Пример использования (poll.module):

<?php
$form['choice'] = array(
  '#type' => 'fieldset', 
  '#title' => t('Choices'), 
  '#prefix' => '<div class="poll-form">', 
  '#suffix' => '</div>', 
  '#tree' => TRUE,
);
?>

#theme

Используется в: button, checkbox, checkboxes, date, fieldset, file, form, hidden, markup, password, radio, radios, select, submit, textarea, textfield

Описание: Функция темизации элемента.

Допустимые значения: Имя функции темизации элемента без theme_.

Пример использования (upload.module):

<?php
$form['#theme'] = 'upload_form_new';
?>

#title

Используется в: checkbox, checkboxes, fieldset, date, file, password, radio, radios, select, textarea, textfield, weight

Описание: Заголовок элемента. Крайне рекомендуется сперва помещать эти значения в функцию t() для того, чтобы не терять возможности локализации формы.

Допустимые значения: Разные

Пример использования (aggregator.module):

<?php
$form['description'] = array(
  '#type' => 'textarea', 
  '#title' => t('Description'), 
  '#default_value' => $edit['description'], 
  '#cols' => 60, 
  '#rows' => 5,
);
?>

#tree

Используется в: button, checkbox, checkboxes, date, fieldset, file, form, hidden, markup, password, radio, radios, select, submit, textarea, textfield, weight

Описание: Обеспечивает создание коллекций элементов. Чаще всего используется к «родительскому элементу» (у которгого выставлен параметр #parent). Смотрите статью #tree and #parents для подробного разбора работы этого параметра.

Допустимые значения: TRUE или FALSE

Пример использования (system.module):

<?php
$form['status'] = array(
  '#type' => 'checkboxes', 
  '#default_value' => $status, 
  '#options' => $options, 
  '#tree' => TRUE,
);
$required = array('block', 'filter', 'system', 'user', 'watchdog');
foreach ($required as $require) {
  $form['status'][$require] = array(
    '#type' => 'hidden', 
    '#value' => 1, 
    '#suffix' => t('required'),
  );
}
?>

#type

Используется в: All

Описание: Определяет тип элемента формы.

Допустимые значения: button, checkbox, checkboxes, date, fieldset, file, form, hidden, markup, password, radio, radios, select, submit, textarea, textfield, value, weight

Пример использования (locale.module):

<?php
$form['submit'] = array('#type' => 'submit', '#value' => t('Import'));
?>

#validate

Используется в: button, form, submit, image_button

Описание: Список функций валидации, которые должна пройти форма или элемент перед submit-обработчиком. Используется для навешивания дополнительных проверок, или для использования своей функции вместо стандартной FROM_ID_validate.

Допустимые значения: Массив названий функций. Каждая функция должна принимать $form и $form_state в своих параметрах и использовать form_set_error(), если форма не проходит валидацию, например:

<?php
function test_form_validate($form, &$form_state) {
  if ($form_state['values']['name'] == '') {
    form_set_error('name', t('You must select a name for this group of settings.'));
  }
}
?>

Пример использования (node.module):

<?php
    // Node types:
    $types = array_map('check_plain', node_get_types('names'));
    $form['advanced']['type'] = array(
      '#type' => 'checkboxes',
      '#title' => t('Only of the type(s)'),
      '#prefix' => '<div class="criterion">',
      '#suffix' => '</div>',
      '#options' => $types,
    );
    $form['advanced']['submit'] = array(
      '#type' => 'submit',
      '#value' => t('Advanced search'),
      '#prefix' => '<div class="action">',
      '#suffix' => '</div>',
    );
 
    $form['#validate'][] = 'node_search_validate';
?>

#validation_arguments

ДЛЯ ВНУТРЕННЕГО ИСПОЛЬЗОВАНИЯ.

#value

Используется в: button, hidden, image_button, item, markup, submit, value

Описание: Используется для установки значений, которые не могут быть изменены пользователем. Не путать с #default_value, которое всего лишь устанавливает значение по-умолчанию.

Допустимые значения: Разные

Пример использования (locale.module):

<?php
$form['submit'] = array('#type' => 'submit', '#value' => t('Import'));
?>

#weight

Используется в: button, checkbox, checkboxes, date, fieldset, file, markup, password, radio, radios, select, submit, textarea, textfield, weight

Описание: Используется для сортировки списка элементов. Элементы с меньшим весом появляются на форме выше.

Допустимые значения: Положительные или отрицательные числа (целые или дробные)

Пример использования (book.module):

<?php
$form['parent'] = array(
  '#type' => 'select', 
  '#title' => t('Parent'), 
  '#default_value' => ($node->parent ? $node->parent : arg(4)), 
  '#options' => book_toc($node->nid), 
  '#weight' => -15,
  '#description' => t('The parent that this page belongs in. Note that pages whose parent is &lt;top-level&gt; are regarded as independent, top-level books.'),
);
?>

имеем потери :(
textarea может иметь #resizable

потеряли:
#pre_render
#process

В описании checkboxes пропущен ноль. Должно быть так:
... Массив #options не может содержать элементов с ключем равным 0 (ноль).

и ещё недостает парметров (взято из .org версии):
#access, #after_build, #disabled, #element_validate, #parents, #post_render, #pre_render, #process, #theme.

насколько я заметил в других элементах формы творится что-то подобное, так что русский перевод я бы назвал "облегченной версией" документации. Но я рад что он есть :)

Есть ещё один тип (не документированный):
[#type] => password_confirm
Насколько я понимаю - выводит элемент из 2х полей - пароль и подтверждение.

Да, то самое двойное поле + валидация.

Вход в систему