2013-07-29 60 views
1

我正在使用Drupal 7並且有一個自定義模塊,用於創建將顯示Drupal表單的菜單項。該代碼是設置這樣的:將URL參數傳遞給在菜單項中創建的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). 

我想我可能會去約這是錯誤的方式。底線是我只需要創建一個URL,我可以傳遞一個ID來顯示一個表單,並將該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; 
} 

回答

1

OK所以這是結束了工作:

$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 
} 
1

在你已經兩次設置hook_menu功能頁面參數「和您應該使用功能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), 
); 
+0

哇,我不能相信我沒有看到這一點。好吧,現在我有一個不同的問題。其實兩個。所以我在菜單鏈接中修復了代碼,但由於某種原因,我在URL中傳遞的值正在被切斷。換句話說,如果我去/求職者/ update-resume/2058569,我的隱藏表單域只包含「2」。另外我的表單提交按鈕什麼都不做。表單呈現,我可以選擇要上傳的文件,但點擊提交按鈕不會提交表單。我更新了原始帖子,向您展示了我用作呈現表單的回調函數。 –

+0

如果你喜歡,你可以給我答覆一些upvote。我花了一些時間來解決最初的問題。 – TheodorosPloumis

相關問題