为什么$ form_state ['values']在drupal_process_form()中被删除?

时间:2010-06-26 20:20:21

标签: drupal cck

我正在尝试使用drupal_execute()以编程方式存储CCK类型节点。空节点被创建;没有保存CCK字段。显然,drupal_process_form()中的第一行负责:

$form_state['values'] = array();

所以我的问题是为什么'值'被删除,更重要的是,如何使用drupal_execute()保存CCK字段?

我也尝试过save_node(),效果很好;但是我更喜欢前者,因为它会调用验证。

1 个答案:

答案 0 :(得分:3)

值数组在drupal_process_form()中被清除,因为它稍后会从$_POST全局填充。如果您查看drupal_execute(),您会看到它正好相反,即填充$_POST传入的$form_state['values']全局。

我认为这样做是为了让表单处理的工作方式与“普通”表单提交的方式相同,因此drupal_execute主要设置阶段,以便所有内容看起来或多或少与以后提交“正常”提交。

这意味着您的方法基本上是正确的并且应该有效 - 如果没有,则必然会出现其他问题。我猜不出这可能是什么,但您可以查看this thread关于您的方法的一些讨论,以及具体的CCK字段主题(它是一个讨论node_save()方法的混合线程,但是链接部分可能适合您的具体情况。)