drupal_execute
includes/form.inc, строка 292
- Версии
- 5
drupal_execute($form_id,
$form_values)- 6
drupal_execute($form_id, &$form_state)
Извлекает форму по form_id
, заполняет ее значениями из $form_state['values']
,
обрабатывает, и возвращает ошибки обработки этой формы. Эта функция — аналог drupal_get_form()
, используемый для программной работы с формами.
// Зарегистрировать нового пользователя $form_state = array(); $form_state['values']['name'] = 'robo-user'; $form_state['values']['mail'] = 'robouser@example.com'; $form_state['values']['pass'] = 'password'; $form_state['values']['op'] = t('Create new account'); drupal_execute('user_register', $form_state);
// Создать новую ноду $form_state = array(); module_load_include('inc', 'node', 'node.pages'); $node = array('type' => 'story'); $form_state['values']['title'] = 'My node'; $form_state['values']['body'] = 'This is the body text!'; $form_state['values']['name'] = 'robo-user'; $form_state['values']['op'] = t('Save'); drupal_execute('story_node_form', $form_state, (object)$node);
Параметры
$form_id
Уникальная строка, идентифицирующая форму. Если существует функция с таким же именем, она вызывается для формирования соответствующей формы. Модули, которые генерируют несколько одинаковых (или очень похожих) форм, используя разные $form_id
могут реализовать функцию hook_forms()
, которая связывает разные значения $form_id
с соответствующей функцией-конструктором формы. Примеры можно найти в node_forms()
, search_forms()
и user_forms()
.
$form_state
Ассоциативный массив, содержащий текущее состояние формы. Наиболее важным в этом массиве является $form_state['values']
— массив, элементами которого на форме эмулируется пользовательский ввод в переменной $_POST
.
... Любые дополнительные аргументы будут переданы всем функциям, которые вызывает в процессе работы drupal_execute()
, в том числе уникальной функции-конструктор формы. Например, форме node_edit
требуется, чтобы при вызове ей с помощью этого дополнительного параметра был передан объект ноды.
Возвращаемое значение
Ошибки валидации формы, если такие были обнаружены.
Связанные темы
Код
<?php
function drupal_execute($form_id, &$form_state) {
$args = func_get_args();
$form = call_user_func_array('drupal_retrieve_form', $args);
$form['#post'] = $form_state['values'];
drupal_prepare_form($form_id, $form, $form_state);
drupal_process_form($form_id, $form, $form_state);
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии