我创建了一个包含hook_submit
函数的自定义模块。此时是否可以加载另一个页面/表单而无需进行重定向?
原因在提交函数的逻辑范围内,有一些变量我想传递到另一个页面,但它由不适合发布/获取数据的复杂数据结构(对象、数组等)组成。
谢谢
hook_submit() 是表单处理链的末端。完成任务后,您有两个选择:重定向(通过 drupal_goto() 或返回 $form["#redirect'])到另一个页面或什么都不做,在这种情况下,您单击提交按钮的页面将是重新加载。
您有几个选项可以将数据传递到重定向目标 $_SESSION 和最常用的数据库。您还可以选择在 javascript 中的 Drupal.settings 对象中设置复杂的数据值,但在这种情况下,如果您的最终目标是通过 PHP 解析该信息,那么这对您来说并不重要。
如果没有关于您的最终目标的具体信息,很难提供具体建议,但是假设使用 $_SESSION 或数据库作为缓存不是您的选择,您可以考虑查看核心 FAPI 和 ctools 各自的 multi 实现- 部分表格以获得额外指导。
在 Drupal 中,您可以确定提交表单的路径。为此,您可以使用
$form['#action'] = url("<another page>") ;
在您的表单中,提交后它将带您到另一个页面,您仍然会从该表单中获取所有帖子值。用于$_POST['<element_name>']
进一步的后值检索。
希望这会有所帮助。