Как программно сделать создание поля даты и времени при создание сущности и вывести в читаемом фоомате?

Главные вкладки

Аватар пользователя natalikarn natalikarn 26 октября 2020 в 14:14

Я создаю тип сущности с формой для записи даты в виде

      $fields['datetime'] = BaseFieldDefinition::create('datetime')
      ->setLabel(t('Дата и время записи'))
      ->setDescription(t(''))
      ->setRequired(true)
      ->setDisplayOptions('view', array(
        'label' => 'above',
        'type' => 'string',
        'weight' => -4,
      ))
      ->setDisplayOptions('form', array(
        'type' => 'date',
        'weight' => -4,
      ))
      ->setDisplayConfigurable('form', TRUE)
      ->setDisplayConfigurable('view', TRUE);

Для программного создания поля новой сущности в своем модуле я пишу следующее
$created = time();

после этого в поле datetime - очевидно создается дата, хранящаяся в виде строки ISO 8601 (выглядит это так - 1603710275), если я не права поправьте меня пожалуйста.

что я делаю не так? Мне нужна дата и время создания сущности в читаемом виде. Вьюс выводит пустое поле, если я указываю формат дата.

Я знаю, что есть вариант автоматического создания записи в таблице с использованием - CURRENT_TIMESTAMP, но я так и не нашла ни одного примера где-бы это можно было применить программно при создании сущностей.

Лучший ответ

Аватар пользователя natalikarn natalikarn 26 октября 2020 в 15:05

Очевидно проблема была в том, что я указала поле как строку, в таком виде работает и отображаются данные как надо.

    $fields['datetime'] = BaseFieldDefinition::create('created')
      ->setLabel(t('Created'))
      ->setDescription(t('Дата и время записи.'));

Комментарии

Аватар пользователя natalikarn natalikarn 26 октября 2020 в 15:05

Очевидно проблема была в том, что я указала поле как строку, в таком виде работает и отображаются данные как надо.

    $fields['datetime'] = BaseFieldDefinition::create('created')
      ->setLabel(t('Created'))
      ->setDescription(t('Дата и время записи.'));