class DateRangeItem
Same name and namespace in other branches
- 9 core/modules/datetime_range/src/Plugin/Field/FieldType/DateRangeItem.php \Drupal\datetime_range\Plugin\Field\FieldType\DateRangeItem
- 8.9.x core/modules/datetime_range/src/Plugin/Field/FieldType/DateRangeItem.php \Drupal\datetime_range\Plugin\Field\FieldType\DateRangeItem
- 11.x core/modules/datetime_range/src/Plugin/Field/FieldType/DateRangeItem.php \Drupal\datetime_range\Plugin\Field\FieldType\DateRangeItem
Plugin implementation of the 'daterange' field type.
Attributes
#[FieldType(id: "daterange", label: new TranslatableMarkup("Date range"), description: [
new TranslatableMarkup("Ideal for storing durations that consist of start and end dates (and times)"),
new TranslatableMarkup("Choose between setting both date and time, or date only, for each duration"),
new TranslatableMarkup("The system automatically validates that the end date (and time) is later than the start, and both fields are completed"),
], category: "date_time", default_widget: "daterange_default", default_formatter: "daterange_default", list_class: DateRangeFieldItemList::class)]
Hierarchy
- class \Drupal\Core\TypedData\TypedData extends \Drupal\Core\TypedData\TypedDataInterface, \Drupal\Component\Plugin\PluginInspectionInterface uses \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\TypedData\TypedDataTrait
- class \Drupal\Core\TypedData\Plugin\DataType\Map extends \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, \Drupal\Core\TypedData\ComplexDataInterface implements \Drupal\Core\TypedData\TypedData
- class \Drupal\Core\Field\FieldItemBase extends \Drupal\Core\Field\FieldItemInterface implements \Drupal\Core\TypedData\Plugin\DataType\Map
- class \Drupal\datetime\Plugin\Field\FieldType\DateTimeItem extends \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface implements \Drupal\Core\Field\FieldItemBase
- class \Drupal\datetime_range\Plugin\Field\FieldType\DateRangeItem implements \Drupal\datetime\Plugin\Field\FieldType\DateTimeItem
- class \Drupal\datetime\Plugin\Field\FieldType\DateTimeItem extends \Drupal\datetime\Plugin\Field\FieldType\DateTimeItemInterface implements \Drupal\Core\Field\FieldItemBase
- class \Drupal\Core\Field\FieldItemBase extends \Drupal\Core\Field\FieldItemInterface implements \Drupal\Core\TypedData\Plugin\DataType\Map
- class \Drupal\Core\TypedData\Plugin\DataType\Map extends \Drupal\Core\TypedData\Plugin\DataType\IteratorAggregate, \Drupal\Core\TypedData\ComplexDataInterface implements \Drupal\Core\TypedData\TypedData
Expanded class hierarchy of DateRangeItem
8 files declare their use of DateRangeItem
- DateRangeDatelistWidget.php in core/
modules/ datetime_range/ src/ Plugin/ Field/ FieldWidget/ DateRangeDatelistWidget.php - DateRangeDefaultWidget.php in core/
modules/ datetime_range/ src/ Plugin/ Field/ FieldWidget/ DateRangeDefaultWidget.php - DateRangeFieldTest.php in core/
modules/ datetime_range/ tests/ src/ FunctionalJavascript/ DateRangeFieldTest.php - DateRangeFieldTest.php in core/
modules/ datetime_range/ tests/ src/ Functional/ DateRangeFieldTest.php - DateRangeItemTest.php in core/
modules/ datetime_range/ tests/ src/ Kernel/ DateRangeItemTest.php
File
-
core/
modules/ datetime_range/ src/ Plugin/ Field/ FieldType/ DateRangeItem.php, line 18
Namespace
Drupal\datetime_range\Plugin\Field\FieldTypeView source
class DateRangeItem extends DateTimeItem {
/**
* Value for the 'datetime_type' setting: store a date and time.
*/
const DATETIME_TYPE_ALLDAY = 'allday';
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
$properties['value'] = DataDefinition::create('datetime_iso8601')->setLabel(t('Start date value'))
->setRequired(TRUE);
$properties['start_date'] = DataDefinition::create('any')->setLabel(t('Computed start date'))
->setDescription(t('The computed start DateTime object.'))
->setComputed(TRUE)
->setClass(DateTimeComputed::class)
->setSetting('date source', 'value');
$properties['end_value'] = DataDefinition::create('datetime_iso8601')->setLabel(t('End date value'))
->setRequired(TRUE);
$properties['end_date'] = DataDefinition::create('any')->setLabel(t('Computed end date'))
->setDescription(t('The computed end DateTime object.'))
->setComputed(TRUE)
->setClass(DateTimeComputed::class)
->setSetting('date source', 'end_value');
return $properties;
}
/**
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $field_definition) {
$schema = parent::schema($field_definition);
$schema['columns']['value']['description'] = 'The start date value.';
$schema['columns']['end_value'] = [
'description' => 'The end date value.',
] + $schema['columns']['value'];
$schema['indexes']['end_value'] = [
'end_value',
];
return $schema;
}
/**
* {@inheritdoc}
*/
public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
$element = parent::storageSettingsForm($form, $form_state, $has_data);
$element['datetime_type']['#options'][static::DATETIME_TYPE_ALLDAY] = $this->t('All Day');
return $element;
}
/**
* {@inheritdoc}
*/
public static function generateSampleValue(FieldDefinitionInterface $field_definition) {
$type = $field_definition->getSetting('datetime_type');
// Just pick a date in the past year. No guidance is provided by this Field
// type.
$start = \Drupal::time()->getRequestTime() - mt_rand(0, 86400 * 365) - 86400;
$end = $start + 86400;
if ($type == static::DATETIME_TYPE_DATETIME) {
$values['value'] = gmdate(DateTimeItemInterface::DATETIME_STORAGE_FORMAT, $start);
$values['end_value'] = gmdate(DateTimeItemInterface::DATETIME_STORAGE_FORMAT, $end);
}
else {
$values['value'] = gmdate(DateTimeItemInterface::DATE_STORAGE_FORMAT, $start);
$values['end_value'] = gmdate(DateTimeItemInterface::DATE_STORAGE_FORMAT, $end);
}
return $values;
}
/**
* {@inheritdoc}
*/
public function isEmpty() {
$start_value = $this->get('value')
->getValue();
$end_value = $this->get('end_value')
->getValue();
return ($start_value === NULL || $start_value === '') && ($end_value === NULL || $end_value === '');
}
/**
* {@inheritdoc}
*/
public function onChange($property_name, $notify = TRUE) {
// Enforce that the computed date is recalculated.
if ($property_name == 'value') {
$this->start_date = NULL;
}
elseif ($property_name == 'end_value') {
$this->end_date = NULL;
}
parent::onChange($property_name, $notify);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
DateRangeItem::DATETIME_TYPE_ALLDAY | constant | Value for the 'datetime_type' setting: store a date and time. | |||
DateRangeItem::generateSampleValue | public static | function | Generates placeholder field values. | Overrides DateTimeItem::generateSampleValue | |
DateRangeItem::isEmpty | public | function | Determines whether the data structure is empty. | Overrides DateTimeItem::isEmpty | |
DateRangeItem::onChange | public | function | React to changes to a child property or item. | Overrides DateTimeItem::onChange | |
DateRangeItem::propertyDefinitions | public static | function | Defines field item properties. | Overrides DateTimeItem::propertyDefinitions | |
DateRangeItem::schema | public static | function | Returns the schema for the field. | Overrides DateTimeItem::schema | |
DateRangeItem::storageSettingsForm | public | function | Returns a form for the storage-level settings. | Overrides DateTimeItem::storageSettingsForm | |
DateTimeItem::DATETIME_TYPE_DATE | constant | Value for the 'datetime_type' setting: store only a date. | |||
DateTimeItem::DATETIME_TYPE_DATETIME | constant | Value for the 'datetime_type' setting: store a date and time. | |||
DateTimeItem::defaultStorageSettings | public static | function | Defines the storage-level settings for this plugin. | Overrides FieldItemBase::defaultStorageSettings | |
DateTimeItemInterface::DATETIME_STORAGE_FORMAT | constant | Defines the format that date and time should be stored in. | |||
DateTimeItemInterface::DATE_STORAGE_FORMAT | constant | Defines the format that dates should be stored in. | |||
DateTimeItemInterface::STORAGE_TIMEZONE | constant | Defines the timezone that dates should be stored in. | |||
DependencySerializationTrait::$_entityStorages | protected | property | |||
DependencySerializationTrait::$_serviceIds | protected | property | |||
DependencySerializationTrait::__sleep | public | function | 1 | ||
DependencySerializationTrait::__wakeup | public | function | #[\ReturnTypeWillChange] | 2 | |
FieldItemBase::calculateDependencies | public static | function | Calculates dependencies for field items. | Overrides FieldItemInterface::calculateDependencies | 2 |
FieldItemBase::calculateStorageDependencies | public static | function | Calculates dependencies for field items on the storage level. | Overrides FieldItemInterface::calculateStorageDependencies | |
FieldItemBase::defaultFieldSettings | public static | function | Defines the field-level settings for this plugin. | Overrides FieldItemInterface::defaultFieldSettings | 6 |
FieldItemBase::delete | public | function | Defines custom delete behavior for field values. | Overrides FieldItemInterface::delete | 2 |
FieldItemBase::deleteRevision | public | function | Defines custom revision delete behavior for field values. | Overrides FieldItemInterface::deleteRevision | |
FieldItemBase::fieldSettingsForm | public | function | Returns a form for the field-level settings. | Overrides FieldItemInterface::fieldSettingsForm | 6 |
FieldItemBase::fieldSettingsFromConfigData | public static | function | Returns a settings array in the field type's canonical representation. | Overrides FieldItemInterface::fieldSettingsFromConfigData | 1 |
FieldItemBase::fieldSettingsSummary | public static | function | Returns a short summary of the field's field-level settings. | Overrides FieldItemInterface::fieldSettingsSummary | |
FieldItemBase::fieldSettingsToConfigData | public static | function | Returns a settings array that can be stored as a configuration value. | Overrides FieldItemInterface::fieldSettingsToConfigData | 1 |
FieldItemBase::getEntity | public | function | Gets the entity that field belongs to. | Overrides FieldItemInterface::getEntity | |
FieldItemBase::getFieldDefinition | public | function | Gets the field definition. | Overrides FieldItemInterface::getFieldDefinition | |
FieldItemBase::getLangcode | public | function | Gets the langcode of the field values held in the object. | Overrides FieldItemInterface::getLangcode | |
FieldItemBase::getSetting | protected | function | Returns the value of a field setting. | ||
FieldItemBase::getSettings | protected | function | Returns the array of field settings. | ||
FieldItemBase::mainPropertyName | public static | function | Returns the name of the main property, if any. | Overrides FieldItemInterface::mainPropertyName | 8 |
FieldItemBase::onDependencyRemoval | public static | function | Informs the plugin that a dependency of the field will be deleted. | Overrides FieldItemInterface::onDependencyRemoval | |
FieldItemBase::postSave | public | function | Defines custom post-save behavior for field values. | Overrides FieldItemInterface::postSave | 2 |
FieldItemBase::preSave | public | function | Defines custom presave behavior for field values. | Overrides FieldItemInterface::preSave | 6 |
FieldItemBase::setValue | public | function | Overrides \Drupal\Core\TypedData\TypedData::setValue(). | Overrides Map::setValue | 3 |
FieldItemBase::storageSettingsFromConfigData | public static | function | Returns a settings array in the field type's canonical representation. | Overrides FieldItemInterface::storageSettingsFromConfigData | 2 |
FieldItemBase::storageSettingsSummary | public static | function | Returns a short summary of the field's storage-level settings. | Overrides FieldItemInterface::storageSettingsSummary | |
FieldItemBase::storageSettingsToConfigData | public static | function | Returns a settings array that can be stored as a configuration value. | Overrides FieldItemInterface::storageSettingsToConfigData | 2 |
FieldItemBase::view | public | function | Returns a renderable array for a single field item. | Overrides FieldItemInterface::view | |
FieldItemBase::writePropertyValue | protected | function | Different to the parent Map class, we avoid creating property objects as far as possible in order to optimize performance. Thus we just update $this->values if no property object has been created yet. |
Overrides Map::writePropertyValue | |
FieldItemBase::__construct | public | function | Constructs a TypedData object given its definition and context. | Overrides TypedData::__construct | 2 |
FieldItemBase::__get | public | function | Magic method: Gets a property value. | Overrides FieldItemInterface::__get | 2 |
FieldItemBase::__isset | public | function | Magic method: Determines whether a property is set. | Overrides FieldItemInterface::__isset | |
FieldItemBase::__set | public | function | Magic method: Sets a property value. | Overrides FieldItemInterface::__set | 1 |
FieldItemBase::__unset | public | function | Magic method: Unsets a property. | Overrides FieldItemInterface::__unset | |
Map::$definition | protected | property | The data definition. | Overrides TypedData::$definition | |
Map::$properties | protected | property | The array of properties. | ||
Map::$values | protected | property | An array of values for the contained properties. | ||
Map::applyDefaultValue | public | function | Applies the default value. | Overrides TypedData::applyDefaultValue | 4 |
Map::get | public | function | Gets a property object. | Overrides ComplexDataInterface::get | |
Map::getIterator | public | function | #[\ReturnTypeWillChange] | ||
Map::getProperties | public | function | Gets an array of property objects. | Overrides ComplexDataInterface::getProperties | |
Map::getString | public | function | Returns a string representation of the data. | Overrides TypedData::getString | |
Map::getValue | public | function | Gets the data value. | Overrides TypedData::getValue | |
Map::set | public | function | Sets a property value. | Overrides ComplexDataInterface::set | |
Map::toArray | public | function | Returns an array of all property values. | Overrides ComplexDataInterface::toArray | 1 |
Map::__clone | public | function | Magic method: Implements a deep clone. | ||
StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | |
StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | ||
StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | ||
StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | ||
StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | |
StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. | ||
TypedData::$name | protected | property | The property name. | ||
TypedData::$parent | protected | property | The parent typed data object. | ||
TypedData::createInstance | public static | function | Constructs a TypedData object given its definition and context. | Overrides TypedDataInterface::createInstance | |
TypedData::getConstraints | public | function | Gets a list of validation constraints. | Overrides TypedDataInterface::getConstraints | 8 |
TypedData::getDataDefinition | public | function | Gets the data definition. | Overrides TypedDataInterface::getDataDefinition | |
TypedData::getName | public | function | Returns the name of a property or item. | Overrides TypedDataInterface::getName | |
TypedData::getParent | public | function | Returns the parent data structure; i.e. either complex data or a list. | Overrides TypedDataInterface::getParent | |
TypedData::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | Overrides PluginInspectionInterface::getPluginDefinition | |
TypedData::getPluginId | public | function | Gets the plugin ID of the plugin instance. | Overrides PluginInspectionInterface::getPluginId | |
TypedData::getPropertyPath | public | function | Returns the property path of the data. | Overrides TypedDataInterface::getPropertyPath | |
TypedData::getRoot | public | function | Returns the root of the typed data tree. | Overrides TypedDataInterface::getRoot | |
TypedData::setContext | public | function | Sets the context of a property or item via a context aware parent. | Overrides TypedDataInterface::setContext | |
TypedData::validate | public | function | Validates the currently set data value. | Overrides TypedDataInterface::validate | |
TypedDataTrait::$typedDataManager | protected | property | The typed data manager used for creating the data types. | ||
TypedDataTrait::getTypedDataManager | public | function | Gets the typed data manager. | 2 | |
TypedDataTrait::setTypedDataManager | public | function | Sets the typed data manager. | 2 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.