Как использовать Drupal 7 date_popup, чтобы получить только время? - PullRequest
3 голосов
/ 26 марта 2011

В Drupal 7 с установленным модулем даты, при создании формы, я хочу просто собрать (через форму) время, чтобы что-то произошло.

При использовании формы api я определяю свое поле следующим образом:

     $form['dose']['time'] = array(
        '#type' => 'date_popup',
        '#title' => t('Start Time'),
        '#date_format' => 'h:i A',
  );

Это очень хорошо отображается на экране, с нужным устройством выбора времени.

Когдаобрабатывая это в моей функции отправки, я не получаю значения для этого поля формы.Это пустое значение.

Если я изменю это значение только на

    $form['dose']['time'] = array(
    '#type' => 'date_popup',
    '#title' => t('End Date'),
    '#date_format' => 'Y-m-d',
  );

Тогда моя функция отправки отлично видит это поле формы, однако она также отображает средство выбора даты, которое я не могу иметь для этогоfield.

Если я установил # required = TRUE для первого примера, тогда проверка завершится неудачей, возможно потому, что не выбраны Y, m, d.Если бы был способ, которым я мог бы установить значение BS для этого, я был бы в порядке с этим, поскольку я мог бы разобрать это позже.

В sidenote я также попробовал тип date_select во многихтаким же образом, с точно такими же пустыми результатами.

Есть ли какой-нибудь способ использовать нативную форму API в Drupal и быть в состоянии фактически получить время через сборщик?

Ответы [ 4 ]

2 голосов
/ 23 июня 2011

Похоже, что модуль Date создает DateObject, который требует даты и времени;возвращает дату, если она действительна, и NULL в противном случае.Поэтому использование функциональности модуля Date может работать не так, как вы хотите.

Возможно, вы можете создать поле как обычное текстовое поле и использовать средство выбора времени jQuery по вашему выбору (например, http://fgelinas.com/code/timepicker/) присоединенов текстовое поле в качестве вашего таймера.

1 голос
/ 20 января 2012
$form['booking'] = array(
    '#title' => t('Booking'),
    '#type' => 'date_popup',
    '#description' => t('Please select the date of booking'),
    '#required' => TRUE,
    '#date_format' => 'Y-m-d h:i A',
    '#date_year_range' => '-0:+1',
);
0 голосов
/ 08 февраля 2015

Я только что столкнулся с той же проблемой. Вот мое решение:

drupal_add_library('date_popup', 'timeentry');
$func = 'timeEntry';
$settings = array(
  'show24Hours' => TRUE,
  'showSeconds' => FALSE,
  'timeSteps' => array(1, 10, 0), // Hours, Minutes, Seconds.
  'spinnerImage' => '',
  'fromTo' => FALSE,
);
$id = date_popup_js_settings_id('export-time', $func, $settings);
$form['time'] = array(
  '#type' => 'textfield',
  '#title' => t('Time'),
  '#id' => $id,
  '#size' => 8,
  '#maxlength' => 10,
  '#field_suffix' => t('o\'clock'),
);
0 голосов
/ 19 июня 2012

Обходной путь - извлечь поля даты только для времени из массива $form_state['input'].

...