【问题标题】:'changed' field in Drupal 8Drupal 8 中的“已更改”字段
【发布时间】:2016-04-18 09:06:14
【问题描述】:

我已经创建了自定义实体,并尝试在表单上显示实体的“更改”时间。

我正在使用此代码

$fields['changed'] = BaseFieldDefinition::create('changed')
        ->setLabel(t('Changed'))
        ->setDescription(t('The time that the entity was last edited.'))
        ->setSetting('value', \date_iso8601($entity->changed->value))
        ->setDisplayOptions('view', [
          'label' => 'above',
          'weight' => 11,
        ])
        ->setDisplayOptions('form', [
          'weight' => 11,
        ])
        ->setDisplayConfigurable('form', TRUE)
        ->setDisplayConfigurable('view', TRUE);

但是无论如何“更改”的时间戳没有出现,你能帮帮我吗?

【问题讨论】:

  • 尝试去掉“setSetting()”方法。
  • 两者都删除了。但什么都没有改变。有趣的时刻是它完全可以与标准的“创建”字段一起使用。但未显示“更改”的。
  • 试试只使用 setLabel 和 setDesc,它应该可以工作。这也是我使用它的方式。然后逐渐添加您想要的选项。我可以想象在表单中显示“已更改”字段是行不通的,因为它对我来说真的没有意义。
  • 但对于我的任务,我需要显示此字段。我想,我只需要一个字段格式化程序
  • 您确定在表单中需要它吗?如果您想在视图中显示它,那很好,但是在表单中?您不会真的手动更改“更改”日期,对吗?

标签: drupal drupal-8


【解决方案1】:

这是我用于我的实体的代码。这应该可以。

$fields['changed'] = BaseFieldDefinition::create('changed')
      ->setLabel(t('Changed'))
      ->setDescription(t('The time that the entity was last edited.'));

【讨论】:

  • 是的,此代码是在您创建内容实体时自动创建的。但是该字段是否显示在页面上?
  • 创建表单上没有显示,因为是自动填写的:P
  • 我需要在编辑表单中,显示实体过去被更改的时间
  • 如果是这种情况,您应该能够使用 EntityTypeManager 获取您要查找的实体并插入已创建字段的值:)
  • 听起来像个计划 ;)
猜你喜欢
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多