1

Drupal 7 を使用しており、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),
);

したがって、私のメニュー項目はフォームを表示しますが、URL で渡されたパラメーターを取得し、処理のためにフォーム送信メソッドに渡される非表示のフォーム フィールドに格納する必要があります。私のフォームコードは次のようになります。

/**
 * 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 にアクセスする方法がわかりません。もともと私は次のようなフォームメソッドでそれを説明する必要があると考えていました:

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).

私はこれについて間違った方法で行っているのではないかと思います。要点は、フォームを表示する ID を渡すことができる URL を作成し、その ID をファイルのアップロードと共に送信メソッドに渡すことだけです。

前もって感謝します。

編集 以下の提案に従ってメニュー項目を修正した後にフォームをレンダリングする新しいコールバック関数を次に示します。

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;
}
4

2 に答える 2

1

hook_menu 関数では、「ページ引数」を 2 回設定しており、関数で「ページ コールバック」を使用する必要がありますoa_onboard_update_resume_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),
);
于 2013-07-30T14:41:11.733 に答える