2010-08-16 56 views
4

創建一個非常簡單的形式所有我需要做的是,這是否一種形式:在Drupal

  1. 用戶輸入郵政編碼在文本框中
  2. 在提交用戶被重定向到mysite.com/[user郵編]

就是這樣!我知道驗證等也是可取的,但我只需要現在就得到這個工作。我不介意它是否被編碼或利用Drupal表單API(實際上我更喜歡前者!)。

我知道這是死的簡單,但不幸的是,我從前端背景的和有一點了解這種事情:(

乾杯!

回答

4

這很容易與Form APIa custom module。您將使用Form API構建表單,並添加一個提交處理程序,將表單的重定向更改爲任何您想要的內容。最後,您需要創建一種訪問表單的方式(通過創建菜單項或創建塊)。

下面是一個實現您想要的窗體的示例:您需要仔細閱讀Form API參考以查看構建窗體時的所有選項。它還提供了兩種方法來訪問形式:

  1. 使用hook_menu()提供的表單的頁面在http://example.com/test
  2. 使用hook_block()提供包含您可以添加和左右移動的塊管理形式塊頁。

示例代碼:

// Form builder. Form ID = function name 
function test_form($form_state) { 

    $form['postcode'] = array(
    '#type' => 'textfield', 
    '#title' => t('Postcode'), 
    '#size' => 10, 
    '#required' => TRUE, 
); 
    $form['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('Go'), 
); 

    return $form; 
} 

// Form submit handler. Default handler is formid_submit() 
function test_form_submit($form, &$form_state) { 
    // Redirect the user to http://example.com/test/<Postcode> upon submit 
    $form_state['redirect'] = 'test/' . check_plain($form_state['values']['postcode']); 
} 

// Implementation of hook_menu(): used to create a page for the form 
function test_menu() { 

    // Create a menu item for http://example.com/test that displays the form 
    $items['test'] = array(
    'title' => 'Postcode form', 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('test_form'), 
    'access arguments' => array('access content'), 
    'type' => MENU_NORMAL_ITEM, 
); 

    return $items; 
} 

// Implementation of hook_block(): used to create a movable block for the form 
function test_block($op = 'list', $delta = 0, $edit = array()) { 
    switch ($op) { 
    case 'list': // Show block info on Site Building -> Blocks 
     $block['postcode']['info'] = t('Postcode form'); 
     break; 
    case 'view': 
     switch ($delta) { 
     case 'postcode': 
      $block['subject'] = t('Postcode'); 
      $block['content'] = drupal_get_form('test_form'); 
      break; 
     } 
     break; 
    } 

    return $block; 
} 

更多信息:

2

在Drupal創建表單我建議您閱讀以下鏈接:http://drupal.org/node/751826它給出瞭如何創建表單的一個很好的概述

在_submit鉤子中,您可以通過_submit鉤子重定向到相應的頁面設置爲$form_state['redirect']

這當然假設您已經擁有創建自定義模塊的權限。如果你需要更多的信息,去here

+0

不要使用'drupal_goto()':立即停止形式的處理等之前提交任何可能已經重視自己以後你的表單處理程序。 '$ form_state ['redirect']'是處理提交重定向的首選方式,因爲它不會中斷表單工作流並允許其他提交處理程序完成。 – 2010-08-16 16:34:53

+0

@Mark Trapp - 感謝您指出這一點,我已經更新了我的回覆。 – Icode4food 2010-08-16 17:00:31

2

Drupal Form API簡單易用,它最終需要作爲開發人員學習。不妨嘗試一下,通過API來完成它,因爲它不是太難。