创建自定义表单,在drupal 7的每个页面中以颜色框显示


Create custom form display it in colorbox in each page in drupal 7?

我想在每个页面的colorbox中显示自定义表单(这是自定义模块)。

我已经在drupal7中创建了表单,如果我通过在url中调用它来运行它,则工作正常,但我需要在colorbox中调用此模块。

我的自定义模块(regform)代码是

  function regform_init() {
    drupal_set_message('Our module is alive!');
  }
  function regform_menu() {
    $items = array();
    $items['regform'] = array(
      'title' => 'Custom page',
      'page callback' => 'drupal_get_form',
      'page arguments' => array('regform_form'), 
      'access arguments' => array('access content'),
      'access callback' => TRUE
    );
    return $items;
  }
  function regform_form($form, &$form_state) {
    $form['#suffix'] = '<div id="test-ajax"></div>';
     $form['email'] = array(
      '#type' => 'textfield', //you can find a list of available types in the form api
      '#title' => 'Enter Email',
      '#size' => 50,
      '#maxlength' => 50,
      '#required' => TRUE, //make this field required
    );
    $form['submit_button'] = array(
      '#type' => 'submit',
      '#value' => t('Submit'),
      '#validate' => 'regform_form_validate',
      '#ajax' => array(
        'callback' => 'regform_form_ajax_callback',
        'wrapper' => 'test-ajax'
      ),
      '#submit' => array('regform_form_ajax_callback'),
    );
    return $form;
  }
  function regform_form_ajax_callback($form, &$form_state) { 
    /*Fire database query*/
    /*Validation msg div block call here*/
    return "<div id='test-ajax'></div>";
  }
  function regform_form_validate($form, &$form_state) {
    if (trim($form_state['values']['email']) == ''){
      form_set_error('email', t('Please Enter Email'));
    }
    if(!valid_email_address($form_state['values']['email'])){
      form_set_error('email', t('Enter Valid Email'));
    }
  }
  function regform_form_submit($form, &$form_state) {
      $form_state['rebuild'] = TRUE;
      $form_state['input'] = array();
  }

这个表单运行正常。

我也不知道如何在drupal 7中使用colorbox。

任何帮助都将不胜感激。

我建议使用混乱工具模态弹出窗体。它很容易实现和集成到Drupal 7中。

Ctools模态表单的一个很好的例子在这里

对于Drupal中的模态表单,我强烈建议您查看一下chaos工具。它提供了一个很棒的AJAX API(可以处理表单提交)。

还有一个模块你可以看一下,情态动词。它是建立在Ctools之上的,提供了一种简单的方式来显示窗体的模式。