Создать пользовательскую форму, отображающую ее в colorbox на каждой странице в drupal 7?

#php #drupal #drupal-7 #drupal-modules #drupal-forms

#php #друпал #drupal-7 #drupal-модули #drupal-forms

Вопрос:

Я хочу отобразить пользовательскую форму (которая является пользовательским модулем) в цветовом поле на каждой странице.

Я создал форму в drupal 7, которая отлично работает, если я запускаю ее, вызывая ее по 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, amp;$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, amp;$form_state) { 
    /*Fire database query*/
    /*Validation msg div block call here*/
    return "<div id='test-ajax'></div>";
  }
  function regform_form_validate($form, amp;$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, amp;$form_state) {
      $form_state['rebuild'] = TRUE;
      $form_state['input'] = array();
  }
  

Эта форма работает нормально.

Также я не имею ни малейшего представления о том, как использовать colorbox в drupal 7.

Любая помощь будет оценена по достоинству.

Заранее благодарю.

Ответ №1:

Я предлагаю использовать инструменты хаоса для модальной всплывающей формы. Его легко реализовать и интегрировать в Drupal 7.

Отличный пример модальной формы Ctools приведен здесь

Ответ №2:

Для модальных форм в Drupal я настоятельно рекомендую взглянуть на инструменты хаоса. Он предоставляет отличный AJAX API (который может обрабатывать отправку формы).

Есть еще один модуль, на который вы можете взглянуть, модальные формы. Он построен поверх Ctools и обеспечивает простой способ отображения форм в модальном формате.