Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么$form_state[';value';]在drupal#u process_form()中被删除?_Drupal_Cck - Fatal编程技术网

为什么$form_state[';value';]在drupal#u process_form()中被删除?

为什么$form_state[';value';]在drupal#u process_form()中被删除?,drupal,cck,Drupal,Cck,我试图使用drupal_execute()以编程方式存储CCK类型的节点。创建空节点;未保存任何CCK字段。显然,drupal_process_form()中的第一行负责: $form_state['values'] = array(); 所以我的问题是为什么“值”会被擦除,更重要的是,如何使用drupal_execute()保存CCK字段 我也尝试了save_node(),效果很好;但是我更喜欢前者,因为它调用验证。值数组在drupal\u process\u form()中被清除,因为它稍

我试图使用drupal_execute()以编程方式存储CCK类型的节点。创建空节点;未保存任何CCK字段。显然,drupal_process_form()中的第一行负责:

$form_state['values'] = array();
所以我的问题是为什么“值”会被擦除,更重要的是,如何使用drupal_execute()保存CCK字段


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

值数组在
drupal\u process\u form()
中被清除,因为它稍后将从
$\u POST
全局中填充。如果您看一看,就会发现它的作用正好相反,即从传入的
$form\u状态['values']
填充
$\u POST
全局

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


这意味着你的方法基本上是正确的,应该是有效的——如果它不正确,那么肯定是有别的地方出了问题。我猜不出这可能是什么,但您可以查看一些关于您的方法的讨论,特别是CCK字段主题(这是一个混合线程,讨论
node\u save()
方法,但链接的部分可能适合您的具体情况)。

感谢您的解释。我想我以前遇到过这个问题;这很有帮助。目前,我在一个类型中处理200多个字段(这只是一个原型,最终应该规范化),很难找到罪魁祸首。我注意到form_get_errors()只发送关于标准字段(如title)的消息;也许有不同的方法来提取验证错误吗?@Stan:我知道没有不同的方法。您确定这不仅仅是一个时间(权重)问题,即对
form\u get\u errors()
的调用发生在调用CCKs验证函数之前吗?那么
form\u get\u errors()
就在
drupal\u execute()之后调用。我将暂时使用
node\u save()
,或者直到字段数量变得更易于管理为止。感谢您的解释。我对同样的事情感到困惑。希望有一个解释这句话的评论!