it-swarm.com.de

Wie erstelle ich ein Formular in einem modalen Dialog mit Drupal 7?

Es scheint viele Lösungen für die Implementierung eines modalen Dialogs zu geben, einschließlich Ctools, Colorbox, Simple Dialog und Ctools Auto-Modal. Ich bin mir nicht sicher, welches für die einfache Codierung über die Formular-API am besten geeignet ist, um Popup-Formulare in einem modalen Dialogfeld zu erstellen.

Das große Problem scheint die Validierung zu sein. Gibt es Best Practices zum Erstellen eines modalen Formulars in Drupal?

4
Adam S

Ein gutes Beispiel für die Verwendung von Formularen in modalen Dialogen ist das Modul Ajax Login/Register . Sie können den Modulcode sehen und verstehen, wie er funktioniert (ajax_register verwendet ctools_modal).

Oder Sie können das Formular manuell rendern und ctools nur für die Antworten verwenden. Zum Beispiel:

mymodule.module:

function mymodule_form($form, &$form_state) {
  ...
  ctools_include('ajax');
  ctools_add_js('ajax-responder');

  $form['#prefix'] = '<div id="container">';
  $form['#suffix'] = '</div>';
  $form['actions']['submit']['#ajax'] = array(
    'callback' => 'mymodule_ajax_callback',
    'wrapper' => 'container',
  );
  ...
}

function mymodule_ajax_callback($form, $form_state) {
  if (!form_get_errors()) {
    $commands   = array();
    $commands[] = ctools_ajax_command_reload();

    return array('#type' => 'ajax', '#commands' => $commands);
  }

  return $form;
}

Jetzt können Sie dieses Formular überall rendern und Popup anzeigen (mit Twitter Bootstrap oder Lightbox):

<a href="#container" data-toggle="modal">Show Form</a>
<div style="display:none;"><?php print drupal_render(drupal_get_form('mymodule_form')); ?></div>
5
aroo