如何在日期字段drupal 8上更改日期格式

时间:2018-01-05 11:16:18

标签: php drupal drupal-8 form-api

我需要帮助更改特定日期字段上日期字段的日期格式,如下所示,从默认格式dd / mm / yyy到d-m-Y

$form['availability']['check_in_date'] = array(
        '#type' => 'date',
        '#title' => $this->t('Check In Date'),
        '#date_date_format' => 'dd-mm-yy',
        '#required' => TRUE,
        '#description' => $this->t('Please enter your check in date'),
        '#default_value' => (isset($customer_data->check_in_date)) ? $customer_data->check_in_date : '',
        '#attributes' => array('data-drupal-date-format' => "dd-mm-yy", 'type'=> 'date', 'min'=> '-1 day', 'max' => '+12 months'),
    );

我已经尝试了将日期字段添加到表单的推荐方法,如此link

所示

我甚至尝试了以下建议,作为对此页面事件的评论的一部分here

一切似乎都不起作用,任何想法。感谢。

2 个答案:

答案 0 :(得分:0)

基本上我尝试过很多东西但没有工作,所以我刚刚创建了字段作为textfield并添加了javascript datepicker来实现相同的结果,而不会破坏drupal进程,我能够实现我想要的结果。

基于此,我假设它是drupal 8中的一个错误,直到它被修复,并为开发人员提供了一个更好的解决方法,以便能够指定他们想要的格式。

答案 1 :(得分:0)

这对我有用,通过使用hook_form_alter并更改表单字段元素


$form["field_date_of_birth"]["widget"][0]['value']['#attributes']['data-drupal-date-format'] = ['d/m/Y'];
$form["field_date_of_birth"]["widget"][0]['value']['#date_date_format'] = 'd/m/Y';
$form["field_date_of_birth"]["widget"][0]['value']['#date_date_element'] = 'text';
$form["field_date_of_birth"]["widget"][0]['value']['#attributes']['title'] = t('Enter a valid date - e.g. @format', [
    '@format' => (new \DateTime())->format('d/m/Y'),
  ]);