it-swarm-eu.dev

Mohu k prvku formuláře pomocí api formuláře připojit miniaplikaci jquery.ui.datepicker?

Mám obecný tvarový prvek:

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

Že chci k tomuto prvku přidat jQuery ui datepicker. Existuje nějaký způsob, jak to udělat pomocí formuláře api, nebo musím přidat následující pomocí drupal_add_js:

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

Nebo existuje ještě lepší způsob?

8
meriial

Můžete použít after_build ve formuláři k volání funkce, která obsahuje drupal_add_js

4
digital

Mnohem jednodušším řešením je instalace modulů Date a Date Popup a použití následujícího elementu API formuláře k okamžitému získání datového prvku data. Žádné další js včetně potřeba.

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

Atribut #date_format přijímá řetězec formátovaný datum PHP , který se používá jako vstupní formát pro pole data.

4
masterchief

Projekt Date obsahuje modul (date_popup.module), který implementuje element formuláře date_popup. date_popup.module pro Drupal 6 definoval funkci date_popup_load () , ale funkce není ve verzi pro Drupal 7) modulu a nejde ani o základní funkci Drupal).

Funkcí bylo zahrnout potřebné soubory JavaScriptu.

  $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');
  }

Ekvivalentní funkce přítomná ve verzi Drupal 7 modulu) je date_popup_add () , která obsahuje následující kód.

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');
} 

Tato funkce se nazývá date_popup_element_process () , což je funkce #process použitá z pole formuláře date_popup. Mohli byste napsat funkci #process obsahující kód podobný tomu, který byl proveden z této funkce, a připojit jej do pole formuláře, do kterého chcete přidat nástroj pro výběr data.

4
kiamlaluno