Как программно отправить любую форму

С помощью функции drupal_execute() можно засабмитить любую форму, которая создана с помощью Form API. Преимущества использования drupal_execute над прямыми вызовами API функций вроде node_save(), user_save() или даже user_register_submit() это:

Данные переданные во втором параметре проходят валидацию, и в случае ошибки, на экран выводятся соответствующие сообщения.
Выполняются все дополнительные #submit и #validate функции, навешанные модулями с помощью hook_form_alter() или hook_form_FORM_ID_alter().
Т.е. используя drupal_execute() можно заставить Drupal думать, что форма была отправлена пользователем с помощью браузера.

Пример программной отправки формы user_register, которая регистрирует нового пользователя:

$form_state['values'] = array(
  'name' => 'new-user',
  'mail' => 'email@gmail.com',
  'pass' => 'password',
  'op'   => t('Create new account'),
);
 
drupal_execute('user_register', $form_state);

Пример создания комментария с помощью drupal_execute().

Подробнее на api.drupal.ru.

Для Drupal 7 есть аналогичная функция — drupal_form_submit().

Написанное актуально для
Drupal 6.x
Теги:
работа с формами
Добавлено: 27 Июля 2018 08:24:23 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...