我有一個表單,我使用Form API在自定義模塊中創建。這是一個相當基本的形式,只有4個領域。它基本上爲用戶提供了一個工作提醒系統。我們只以電子郵件地址爲基礎,並提供一些搜索參數。我們希望人們能夠快速匿名地設置搜索代理,這意味着他們不會創建Drupal用戶帳戶,因爲我們不希望他們必須處理密碼等。他們只會將他們的電子郵件地址,檢查關閉一些偏好,我們將保存數據。Drupal 7:根據另一個字段和數據庫查找顯示錶單上的字段
現在我需要處理的問題是允許用戶稍後編輯他們的偏好和/或取消訂閱。再次,這不是高安全性,它不需要。我想要做的是最初只會在表格中提供他們的電子郵件地址,並允許他們提交。然後,我會檢查數據庫,看看我們是否已經有了該電子郵件地址的條目,如果是,請顯示預先填好的表單以供他們編輯或取消訂閱,其他則只顯示空白表單。所以我只是想找出解決這個問題的最好方法。我想我只有一個表單,其中包含所有字段,包括電子郵件地址,但在成功調用數據庫之後,除了電子郵件地址之外,還可以顯示其他字段。我只是絆倒如何做到這一點。
編輯: 我想知道如果我可以使用Drupal的AJAX功能來實現這一目標嗎?我試過這個,但是我無法讓它工作。我使用包裝器ID和回調函數在我的提交按鈕上放置了一個Ajax屬性。我在窗體中創建了一個帶有空白標記的表單元素,並使用了一個前綴和後綴,用我在AJAX參數中使用的ID創建了一個包裝div。然後我想我的回調函數中,我可以做數據庫查找,然後返回我需要預填充或不需要的表單元素到創建的包裝div,但是當我這樣做時,表單通過AJAX提交,而我拿到旋轉輪,但不管我在回調中返回什麼,它都不會出現在我的輸出包裝div中。我是否以正確的方式去做這件事?我也確保我有$ form_state ['rebuild'] = TRUE;在我原來的形式。
這是我試過的,它沒有工作。
/**
* Implements hook_form().
*/
function _vista_form($form, &$form_state) {
$form = array();
$form_state['rebuild'] = TRUE;
$form['email'] = array(
'#type' => 'textfield',
'#title' => 'Email',
'#required' => TRUE,
);
$form['render_area'] = array(
'#type' => 'markup',
'#markup' => '',
'#prefix' => '<div id="job-agent-form">',
'#suffix' => '</div>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#attributes' => array('class' => array('submit')),
'#ajax' => array(
'callback' => '_display_form',
'wrapper' => 'job-agent-form',
'method' => 'replace',
'effect' => 'fade',
),
return $form;
}
function _display_form($form, &$form_state) {
// there are other form elements that would go here also, I just added two for example
$type_options = array(
'VISTA-HealthCare-Partners-Government' => 'Vista Healthcare Partners',
'International' => 'International Locum Tenens',
'Permanent' => 'Permanent Physician',
'US-Locum-Tenens' => 'US Locum Tenens',
);
$form['job_type'] = array(
'#type' => 'checkboxes',
'#multiple' => TRUE,
'#title' => 'Type of Job',
'#options' => $type_options,
'#empty_option' => 'Choose a placement type',
'#empty_value' => 'all',
//'#default_value' => $type_selected,
);
$form['active'] = array(
'#type' => 'checkbox',
'#title' => 'Subscribe/Unsubscribe',
'#default_value' => 1,
);
return $form;
}
爲什麼你不能使用現有的訂閱模塊? – RajeevK
沒有一個人按照我們希望他們未經嚴格修改的方式工作。只是從頭開始創建我們需要的東西。 –