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