Php 使用drupal_goto()发送数组

Php 使用drupal_goto()发送数组,php,drupal-7,Php,Drupal 7,我在菜单钩子中定义了两个drupal节点,如下所示。第一个页面是一个界面:一些drupal表单我想做的是通过submitt函数从第一个页面获取提交的值,并将用户重定向到下一个页面,并使用函数drupal_goto()发送这些值。如何将这些值/数组添加到drupal_goto()中函数,然后从目标页面获取并使用它(场景是:page1--submitt--get submitted Value--将它们放入一个数组--转到另一个页面并使用drupal_goto()函数发送提交的值) 在我的模块中:

我在菜单钩子中定义了两个drupal节点,如下所示。第一个页面是一个界面:一些drupal表单我想做的是通过submitt函数从第一个页面获取提交的值,并将用户重定向到下一个页面,并使用函数drupal_goto()发送这些值。如何将这些值/数组添加到drupal_goto()中函数,然后从目标页面获取并使用它(场景是:page1--submitt--get submitted Value--将它们放入一个数组--转到另一个页面并使用drupal_goto()函数发送提交的值)

在我的模块中:

function my_module_menu() {

  $items = array();
  $items['admin/interface'] = array( // page one that is some drupal forms
    'title' => '',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('my_module_form'),
    'access arguments' => array('access content'),
    'file' => 'includes/my_module.form.inc',
    'type' => MENU_NORMAL_ITEM,
  );

  $items['complete-page'] = array( // once the user is redirected to this page I want to use 
 // the sent array as an argument of the menu function: my_module_function()
    'title' => 'complete',
    //'page callback' => 'my_module_complete',
    //'page arguments' => $query,
    'access callback' => TRUE,
    'page callback' => 'my_module_function',
    'access arguments' => array('access content'),
    'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}
function my_module_function($val){
//use the value $val
}
表单功能:

function my_module_form($form, &$form_state) {
 //some drupal forms
 $form['xxx'] = array(
 '#type' => 'type',
 '#value' => t('some text'),
 );
 return $form;
}
在我的submitt函数中,我希望获取一个已提交的值。将一些已提交的值放入一个数组中,并将其发送到下一页:

function my_module_submit($form, &$form_state) {
    $values = array();
    $value1 =$form_state['values']['xxx'];
    $value2 =$form_state['values']['form'];
    $value3 =$form_state['values']['another_form'];
    $values[0] = $value1;
    $values[1] = $value2;
    $values[2] = $value3;
    drupal_goto('complete-page', $values);
}

drupal_goto
只是将重定向发送回浏览器,这意味着需要在该请求中传递任何数据,或者您可以将其存储在$\u会话中

例如:

drupal_goto( 'complete-page', array( 'query' => array( 'xxx' => $form_state['values']['xxx'] ) ) );
或:


第一种方法的缺点是提交的值在查询中可见。第二种方法的缺点是它会污染会话,并且是将数据发送到目的地的一种非常迂回的方法(您应该删除处理程序中的数据以获得完整的页面)。

您不应该使用
drupal_goto
函数来管理多页表单。在这里,您面临这样一个问题:要给出参数,您必须在url中给出它们(¶m_name=param_value)或将它们存储到用户会话中。您还可以通过在每个页面上调用一个新表单来释放Drupal的缓存机制

问题是使用表单附带的
$form\u state
数组。您可以存储在页码内,然后根据此页码对返回的表单进行调整

你会发现一些例子或例子。 目前更好的方法是使用您必须已经安装的
chaostools
(许多模块都必须安装)。没有在线文档:您应该安装模块。这是。注意,这个例子是针对Drupal 6的

$_SESSION['complete-page']['xxx'] = $form_state['values']['xxx'];
drupal_goto( 'complete-page' );