Массив значений очищается в drupal_process_form()
, потому что позже он будет заполнен глобальным значением $_POST
. Если вы посмотрите на drupal_execute()
, вы увидите, что он делает противоположное, то есть, заполняет глобальный $_POST
из переданного в $form_state['values']
.
Я думаю, что это сделано для того, чтобы обработка формы работала так же, как и для «нормальной» отправки формы, поэтому drupal_execute
в основном устанавливает этап так, чтобы все выглядело более или менее так же, как с нормальный 'отправить позже.
Это означает, что ваш подход в основном правильный и должен работать - если это не так, то должно быть что-то не так. Я не могу догадаться, что это может быть, но вы могли бы проверить эту ветку для некоторых обсуждений вашего подхода, в частности, для темы CCK (это смешанная ветка, в которой также обсуждается подход node_save()
, но связанная часть может соответствовать вашей конкретной ситуации).