it-swarm-id.com

Bisakah saya melampirkan widget jquery.ui.datepicker ke elemen formulir menggunakan formulir api?

Saya memiliki elemen bentuk umum:

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

Bahwa saya ingin menambahkan datepicker jquery ui ke elemen ini. Apakah ada cara untuk melakukan ini melalui formulir api, atau apakah saya harus menambahkan yang berikut ini menggunakan drupal_add_js:

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

Atau ada cara lain yang lebih baik?

7
meriial

Anda dapat menggunakan after_build di formulir Anda untuk memanggil fungsi yang berisi drupal_add_js

4
digital

Solusi yang jauh lebih mudah adalah dengan menginstal modul Date dan Date Popup dan menggunakan elemen api form berikut untuk secara instan mendapatkan elemen popup tanggal. Tidak ada tambahan js termasuk yang dibutuhkan.

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

Atribut #date_format menerima PHP Date string yang diformat yang digunakan sebagai format input untuk bidang tanggal.

4
masterchief

Proyek Date berisi modul (date_popup.module) yang mengimplementasikan elemen form date_popup. date_popup.module untuk Drupal 6 mendefinisikan fungsi date_popup_load () , tetapi fungsi tersebut tidak ada dalam versi untuk Drupal 7 modul, juga bukan fungsi inti Drupal.

Apa fungsi itu adalah memasukkan file JavaScript yang diperlukan.

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

Fungsi yang setara hadir dalam versi Drupal 7 modul adalah date_popup_add () , yang berisi kode berikut.

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

Fungsi itu dipanggil dari date_popup_element_process () , yang merupakan fungsi #process yang digunakan dari bidang formulir date_popup. Anda bisa menulis fungsi proses #proses yang berisi kode yang mirip dengan yang dieksekusi dari fungsi itu, dan melampirkannya ke bidang formulir yang ingin Anda tambahkan pemilih tanggal.

4
kiamlaluno