Forms 将URL参数传递给在菜单项中创建的Drupal表单

Forms 将URL参数传递给在菜单项中创建的Drupal表单,forms,drupal,drupal-7,Forms,Drupal,Drupal 7,我使用的是Drupal7,有一个自定义模块,我在其中创建了一个菜单项,它将显示Drupal表单。代码的设置如下所示: $items['job-seekers/update-resume/%'] = array( 'title' => 'Update Resume', 'page callback' => 'drupal_get_form', 'page arguments' => 'oa_onboard_update_resume_form', 'acc

我使用的是Drupal7,有一个自定义模块,我在其中创建了一个菜单项,它将显示Drupal表单。代码的设置如下所示:

$items['job-seekers/update-resume/%'] = array(
  'title' => 'Update Resume',
  'page callback' => 'drupal_get_form',
  'page arguments' => 'oa_onboard_update_resume_form',    
  'access arguments' => array('access content'),
  'page arguments' => array(2),
);
/**
 * Form callback for updating resume
 */
function oa_onboard_update_resume_form($form_state) {  

  $form['resume_file'] = array(
    '#type' => 'file',
    '#title' => t('Resume Upload'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );

  return $form;
}
因此,我的菜单项将显示一个表单,但我需要获取URL中传递的参数,并将其存储在一个隐藏的表单字段中,该字段最终将传递给表单提交方法进行处理。我的表单代码如下所示:

$items['job-seekers/update-resume/%'] = array(
  'title' => 'Update Resume',
  'page callback' => 'drupal_get_form',
  'page arguments' => 'oa_onboard_update_resume_form',    
  'access arguments' => array('access content'),
  'page arguments' => array(2),
);
/**
 * Form callback for updating resume
 */
function oa_onboard_update_resume_form($form_state) {  

  $form['resume_file'] = array(
    '#type' => 'file',
    '#title' => t('Resume Upload'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );

  return $form;
}
所以这是一个非常简单的表单,只是一个文件上传字段,但是我不知道如何访问URL中传递的ID。最初我想我需要用如下的form方法来解释它:

function oa_onboard_update_resume_form($candidateId) { 
但当我尝试这样做时,会出现一个错误:

Notice: Undefined index: 20249278 in drupal_retrieve_form() (line 763 of C:\xampp\htdocs\mysite\includes\form.inc).
Warning: call_user_func_array() expects parameter 1 to be a valid callback, function '20249278' not found or invalid function name in drupal_retrieve_form() (line 798 of C:\xampp\htdocs\mysite\includes\form.inc).
我想我可能走错了方向。底线是,我只需要创建一个URL,我可以将ID传递给该URL,该URL将显示一个表单,并将该ID与文件上载一起传递给submit方法

提前谢谢

编辑 下面是一个新的回调函数,它在按照以下建议修复菜单项后呈现表单:

function oa_onboard_update_resume_form($candidateId) {  

  $form['candidateId'] = array(
    '#type' => 'hidden',
    '#value' => $candidateId,
  );

  $form['resume_file'] = array(
    '#type' => 'file',
    '#title' => t('Resume Upload'),
  );

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );

  return $form;
}

在hook_菜单函数中,您有两次设置“页面参数”,您应该将“页面回调”与函数
oa_onboard\u update\u resume\u form
一起使用

$items['job-seekers/update-resume/%'] = array(
  'title' => 'Update Resume',
  'page callback' => 'oa_onboard_update_resume_form',    
  'access arguments' => array('access content'),
  'page arguments' => array(2),
);

好的,这就是最终起作用的原因:

$items['job-seekers/update-resume/%'] = array(
  'title' => 'Update Resume',
  'page callback' => 'drupal_get_form',
  'page arguments' => array('oa_onboard_update_resume_form', 2),
  'access arguments' => array('access content'),
);

function oa_onboard_update_resume_form($form, &$form_state, $candidateId) {
  // I can use candidateId here now
}

哇,真不敢相信我没看到。好的,现在我有一个不同的问题。实际上是两个。所以我修复了菜单链接中的代码,但是由于某种原因,我在URL中传递的值被切断了。换句话说,如果我进入/job sequeers/update resume/2058569,我的隐藏表单字段只包含“2”。此外,我的表单提交按钮不起任何作用。表单呈现,我可以选择要上载的文件,但单击“提交”按钮不会提交表单。我更新了我的原始帖子,向您展示了我使用的回调函数来呈现表单。如果您愿意,您可以对我的答案投赞成票。我已经花了一些时间来解决最初的问题。