如何在Drupal模块中创建表单?

问题描述:

我在网上搜索一个教程来创建一个页面显示的表单, 当我们使用模块和块显示内容时,我们应该在模块内显示一个表单吗? 由于我是drupal的新手,我对drupal表单并不了解。 我下载并安装了示例表单模块。但我不知道这个表单会显示在哪里。 我从这里下载了 http://drupal.org/node/1121110如何在Drupal模块中创建表单?

即使你是drupal的新手,这并不复杂。我在这个例子中所要做的只是使用hook_menu()并且知道drupal form api reference的可用表单项。

下面是你要做的一个例子。

/** 
* Implementation of hook_menu() 
*/ 
function mymodule_menu() 
{ 
    $items = array(); 

    $items['my-custom-page-path'] = array(
     'title'    => 'My Page Title', 
     'description'  => t(''), 
     'access callback' => 'user_access', 
     'access arguments' => array('access content'), 
     'page callback'  => 'drupal_get_form', 
     'page arguments' => array('mymodule_form_id'), 
    ); 

    return $items; 
} 

function mymodule_form_id($form, &$form_state) 
{ 
    $form = array(); 

    $form['my_textfield'] = array(
     '#type'   => 'textfield', 
     '#title'  => t('Text Field'), 
     '#description' => t(''), 
     '#weight'  => 20, 
     '#required'  => TRUE, 
     '#size'   => 5, 
     '#maxlength' => 5, 
    ); 

    $form['submit'] = array(
     '#type'   => 'submit', 
     '#value'  => t('Save settings'), 
     '#weight'  => 10000, 
    ); 

    return $form; 
} 

/** 
* Form validation callback 
*/ 
function mymodule_form_id_validate($form, &$form_state) 
{ 
    // notice adding "_validate" to the form id 
} 

/** 
* Form submission callback 
*/ 
function mymodule_form_id_submit($form, &$form_state) 
{ 
    // notice adding "_submit" to the form id 
} 

#Here is the simple code for creating form in module# 

=============================================================== 

/*..firstly create a menu in module by copying this code..*/ 
function form_test_menu() { 
    $items['formtest'] = array(
         'title' => 'Form Test', 
         'page callback' => 'drupal_get_form', 
         'page arguments' => array('form_test_form'), 
         'access callback' => TRUE, 
         ); 
    return $items; 
} 

/*...Now create fields like below...*/ 
function form_test_form($form,&$form_submit) { 
    $form['firstname'] = array(
          '#title' => t('Firstname'), 
          '#type' => 'textfield', 
          '#required' => TRUE, 
          ); 
    $form['lastname'] = array(
          '#title' => t('Lastname'), 
          '#type' => 'textfield', 
          ); 
    $form['submit'] = array(
         '#value' => 'Submit', 
         '#type' => 'submit', 
         ); 
    return $form; 
}