web-gelistirme-sc.com

Api formunu kullanarak bir form öğesine jquery.ui.datepicker widget'ı ekleyebilir miyim?

Genel bir form öğesi var:

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

Bu öğeye jquery ui datepicker eklemek istiyorum. Bunu api formu aracılığıyla yapmanın bir yolu var mı, ya da drupal_add_js kullanarak aşağıdakileri eklemek zorunda:

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

Yoksa başka, daha iyi bir yol var mı?

7
meriial

drupal_add_js içeren bir işlevi çağırmak için formunuzda after_build kullanabilirsiniz

4
digital

Bunun için çok daha kolay bir çözüm, Tarih ve Tarih Açılır modüllerini kurmak ve anında bir tarih açılır öğesi almak için aşağıdaki form api öğesini kullanmaktır. Gerekli ekstra js.

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

#Date_format özniteliği, tarih alanının giriş biçimi olarak kullanılan PHP Date biçimli bir dizeyi kabul eder.

4
masterchief

Tarih projesi, date_popup form öğesini uygulayan bir modül (date_popup.module) içerir. Drupal 6 için date_popup.module date_popup_load () işlevini tanımladı, ancak işlev Drupal 7 sürümünde mevcut değil) ne de bir Drupal çekirdek işlevi).

İşlev, gerekli JavaScript dosyalarını dahil etmekti.

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

Modülün Drupal 7 sürümünde bulunan eşdeğer işlev, aşağıdaki kodu içeren date_popup_add () şeklindedir.

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

Bu işlev, date_popup form alanında kullanılan #process işlevi olan date_popup_element_process () adresinden çağrılır. Bu işlevden çalıştırılana benzer kod içeren bir #process işlevi yazabilir ve bunu tarih seçicisini eklemek istediğiniz form alanına ekleyebilirsiniz.

4
kiamlaluno