it-swarm.com.de

Kann ich ein jquery.ui.datepicker-Widget mithilfe der Formular-API an ein Formularelement anhängen?

Ich habe ein generisches Formularelement:

$form['date'] = array(
    '#type' => 'textfield',
    '#title' => t( 'Date' ),
);

Dass ich diesem Element den jquery ui datepicker hinzufügen möchte. Gibt es eine Möglichkeit, dies über das Formular API zu tun, oder muss ich mit drupal_add_js Folgendes hinzufügen:

$('#edit-date').datepicker();

Oder gibt es einen anderen, noch besseren Weg?

7
meriial

Sie können after_build in Ihrem Formular verwenden, um eine Funktion aufzurufen, die drupal_add_js enthält

4
digital

Eine viel einfachere Lösung besteht darin, die Module Date und Date Popup zu installieren und das folgende Formular-API-Element zu verwenden, um sofort ein Date-Popup-Element abzurufen. Keine zusätzlichen js inklusive benötigt.

$form['date'] = array(
  '#type' => 'date_popup',
  '#title' => t('Date'),
  '#date_format' => 'd/m/Y',
);

Das Attribut #date_format akzeptiert eine formatierte Zeichenfolge PHP Date , die als Eingabeformat für das Datumsfeld verwendet wird.

4
masterchief

Das Projekt Date enthält ein Modul (date_popup.module), das ein date_popup-Formularelement implementiert. date_popup.module für Drupal 6 hat die Funktion date_popup_load () definiert, aber die Funktion ist in der Version für Drupal 7 nicht vorhanden) des Moduls, noch ist es eine Drupal Kernfunktion.

Die Funktion umfasste die erforderlichen JavaScript-Dateien.

  $path = drupal_get_path('module', 'date_popup');
  if (module_exists('jquery_ui')) {
    jquery_ui_add('ui.datepicker');
    global $language;
    if ($language->language != 'en') {
      jquery_ui_add("i18n/ui.datepicker-{$language->language}");
    }
  }
  if (variable_get('date_popup_timepicker', 'default') == 'default') {
    drupal_add_js($path . '/lib/jquery.timeentry.pack.js');
  }

Die äquivalente Funktion in der Version Drupal 7 des Moduls) ist date_popup_add () , die den folgenden Code enthält.

drupal_add_library('system', 'ui.datepicker');
drupal_add_library('date_popup', 'timeentry');

// Add the wvega-timepicker library if it's available.
$wvega_path = date_popup_get_wvega_path();
if ($wvega_path) {
  drupal_add_js($wvega_path . '/jquery.timepicker.js');
  drupal_add_css($wvega_path . '/jquery.timepicker.css');
} 

Diese Funktion wird von date_popup_element_process () aufgerufen. Dies ist die # process-Funktion, die im Formularfeld date_popup verwendet wird. Sie können eine # process-Funktion schreiben, die Code enthält, der dem von dieser Funktion ausgeführten Code ähnelt, und ihn an das Formularfeld anhängen, zu dem Sie die Datumsauswahl hinzufügen möchten.

4
kiamlaluno