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