Drupal 8にコンテンツエンティティがあり、datetimeのフォームを生成します。フォームに日付セレクターのみを表示したいのですが、日付と時刻のセレクターが表示されます。
$fields['start_date'] = BaseFieldDefinition::create('datetime')
->setLabel(t('Start date'))
->setDescription(t('The date that the survey is started.'))
->setRequired(true)
->setDisplayOptions('view', array(
'label' => 'above',
'type' => 'string',
'weight' => -4,
))
->setDisplayOptions('form', array(
'type' => 'date',
'weight' => -4,
))
->setDisplayConfigurable('form', TRUE)
->setDisplayConfigurable('view', TRUE);
日付セレクターのみを表示するにはどうすればよいですか?
あなたの問題は、フィールドではなくフォームでオプションを設定していることです。 datatimeフィールドには、オプションdatetime_type
これは2つの文字列 'date'または 'datetime'(DateTimeItem
を参照)にすることができ、デフォルトは 'datetime'です。
したがって、フィールドを作成するときは、この設定を更新する必要があります。以下はあなたのために働くはずです:
$fields['start_date'] = BaseFieldDefinition::create('datetime')
->setLabel(t('Start date'))
->setDescription(t('The date that the survey is started.'))
->setSetting('datetime_type', 'date')
->setRequired(true)
->setDisplayOptions('view', array(
'label' => 'above',
'type' => 'string',
'weight' => -4,
))
->setDisplayConfigurable('form', TRUE)
->setDisplayConfigurable('view', TRUE);
補足として、このような問題が発生した場合、最初に調べるのは、使用しているフィールドを実装しているクラスです。次に、そのフィールドをカバーするテストを調べます。多くの場合、必要なサンプルコードが見つかります。この場合、DateTimeFieldTest
を見て、その統合テストが何を行っているかを確認します。