Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/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
Forms Drupal模块开发:如何在表单提交和页面处理函数之间进行通信_Forms_Drupal_Module_Drupal Fapi - Fatal编程技术网

Forms Drupal模块开发:如何在表单提交和页面处理函数之间进行通信

Forms Drupal模块开发:如何在表单提交和页面处理函数之间进行通信,forms,drupal,module,drupal-fapi,Forms,Drupal,Module,Drupal Fapi,我正在编写一个模块,需要从页面处理程序函数检索表单提交函数中设置的值。原因是我将表单提交的结果呈现在与页面处理程序相同的页面上 我有这个功能,但我使用全局变量,我不喜欢。我希望能够为此使用$form_state['storage'],但不能,因为我无法从页面处理程序访问$form_state变量 有什么建议吗?关于: 您无权访问页面处理程序中的$form_state,但我认为它可能会自动用于form builder函数。看看你能不能用这样的方法把它倒出来 function _ncbi_subsi

我正在编写一个模块,需要从页面处理程序函数检索表单提交函数中设置的值。原因是我将表单提交的结果呈现在与页面处理程序相同的页面上

我有这个功能,但我使用全局变量,我不喜欢。我希望能够为此使用$form_state['storage'],但不能,因为我无法从页面处理程序访问$form_state变量

有什么建议吗?

关于:

您无权访问页面处理程序中的$form_state,但我认为它可能会自动用于form builder函数。看看你能不能用这样的方法把它倒出来

function _ncbi_subsites_show_paths_form($form_state) {
  dsm($form_state);
 // everything else
}
另一种可能,尽管没有比使用globals好多少,但是可以使用Drupal的变量_set()和变量_get函数


如果只处理一个值,则可以将其作为URL参数从提交处理程序中的$form['#redirect']传递到页面

好主意。我要尝尝其中的一些。让我惊讶的是,这不是一个普遍的需求。我的理解是,您可以:1)从hook_menu()的实现直接将用户发送到表单,将drupal_get_form()作为回调发送,并将表单构建函数的名称作为参数发送。2) 使用hook_菜单中的pass页面处理程序,并在该函数中调用drupal_get_表单。通过将字符串连接到drupal_get_表单的输出,这不是用表单输出其他内容的唯一方法吗?在我看来,您经常希望页面处理程序与表单通信。您需要页面处理程序对表单做什么?您可以使用drupal_get_form()发送任意数量的附加参数,您只需将第一个参数作为表单id即可。有关drupal的问题,还可以访问drupal.stackexchange.com。