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