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