class Datetime extends DateElementBase (View source)

Provides a datetime element.

Traits

Ensures that TrustedCallbackInterface can be enforced for callback methods.

Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.

Provides dependency injection friendly methods for serialization.

Provides a trait for the messenger service.

Constants

DERIVATIVE_SEPARATOR

A string which is used to separate base plugin IDs from the derivative ID.

Properties

protected string $pluginId

The plugin_id.

from  PluginBase
protected array $pluginDefinition

The plugin implementation definition.

from  PluginBase
protected array $configuration

Configuration information passed into the plugin.

from  PluginBase
protected TranslationInterface $stringTranslation

The string translation service.

from  StringTranslationTrait
protected array $_serviceIds

An array of service IDs keyed by property name used for serialization.

from  DependencySerializationTrait
protected array $_entityStorages

An array of entity type IDs keyed by the property name of their storages.

from  DependencySerializationTrait
protected MessengerInterface $messenger

The messenger.

from  MessengerTrait
static protected DateTimeInterface $dateExample

Methods

__construct(array $configuration, string $plugin_id, mixed $plugin_definition)

Constructs a \Drupal\Component\Plugin\PluginBase object.

string
getPluginId()

Gets the plugin_id of the plugin instance.

string
getBaseId()

Gets the base_plugin_id of the plugin instance.

string|null
getDerivativeId()

Gets the derivative_id of the plugin instance.

array
getPluginDefinition()

Gets the definition of the plugin implementation.

bool
isConfigurable()

Determines if the plugin is configurable.

t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

getStringTranslation()

Gets the string translation service.

$this
setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

messenger()

Gets the messenger.

static 
setAttributes(array $element, array $class = [])

Sets a form element's class attribute.

static array
preRenderGroup(array $element)

Adds members of this group as actual elements for rendering.

static array
processAjaxForm(array $element, FormStateInterface $form_state, array $complete_form)

Form element processing handler for the #ajax form property.

static array
preRenderAjaxForm(array $element)

Adds Ajax information about an element to communicate with JavaScript.

static array
processGroup(array $element, FormStateInterface $form_state, array $complete_form)

Arranges elements into groups.

static mixed
valueCallback(array $element, mixed $input, FormStateInterface $form_state)

Determines how user input is mapped to an element's #value property.

static array
processPattern(array $element, FormStateInterface $form_state, array $complete_form)

process callback for #pattern form element property.

static 
validatePattern($element, FormStateInterface $form_state, array $complete_form)

element_validate callback for #pattern form element property.

static array
processAutocomplete(array $element, FormStateInterface $form_state, array $complete_form)

Adds autocomplete functionality to elements.

static array
datetimeRangeYears(string $string, object $date = NULL)

Specifies the start and end year to use as a date range.

static string
getElementTitle(array $element, array $complete_form)

Returns the most relevant title of a datetime element.

mixed
doTrustedCallback(callable $callback, array $args, $message, string $error_type = TrustedCallbackInterface::THROW_EXCEPTION, string $extra_trusted_interface = NULL)

Performs a callback.

array
getInfo()

Returns the element properties for this element.

static array
processDatetime(array $element, FormStateInterface $form_state, array $complete_form)

Expands a datetime element type into date and/or time elements.

static 
validateDatetime(array $element, FormStateInterface $form_state, array $complete_form)

Validation callback for a datetime element.

static string
formatExample(string $format)

Creates an example for a date format.

static string
getHtml5DateFormat(array $element)

Retrieves the right format for an HTML5 date element.

static string
getHtml5TimeFormat(array $element)

Retrieves the right format for an HTML5 time element.

Details

__construct(array $configuration, string $plugin_id, mixed $plugin_definition)

Constructs a \Drupal\Component\Plugin\PluginBase object.

Parameters

array $configuration

A configuration array containing information about the plugin instance.

string $plugin_id

The plugin_id for the plugin instance.

mixed $plugin_definition

The plugin implementation definition.

string getPluginId()

Gets the plugin_id of the plugin instance.

Return Value

string

The plugin_id of the plugin instance.

string getBaseId()

Gets the base_plugin_id of the plugin instance.

Return Value

string

The base_plugin_id of the plugin instance.

string|null getDerivativeId()

Gets the derivative_id of the plugin instance.

Return Value

string|null

The derivative_id of the plugin instance NULL otherwise.

array getPluginDefinition()

Gets the definition of the plugin implementation.

Return Value

array

The plugin definition, as returned by the discovery object used by the plugin manager.

bool isConfigurable()

Determines if the plugin is configurable.

Return Value

bool

A boolean indicating whether the plugin is configurable.

protected TranslatableMarkup t(string $string, array $args = [], array $options = [])

Translates a string to the current language or to a given language.

See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for important security information and usage guidelines.

In order for strings to be localized, make them available in one of the ways supported by the

Parameters

string $string

A string containing the English text to translate.

array $args

(optional) An associative array of replacements to make after translation. Based on the first character of the key, the value is escaped and/or themed. See \Drupal\Component\Render\FormattableMarkup::placeholderFormat() for details.

array $options

(optional) An associative array of additional options, with the following elements:

  • 'langcode' (defaults to the current language): A language code, to translate to a language other than what is used to display the page.
  • 'context' (defaults to the empty context): The context the source string belongs to. See the @link i18n Internationalization topic @endlink for more information about string contexts.

Return Value

TranslatableMarkup

An object that, when cast to a string, returns the translated string.

See also

FormattableMarkup::placeholderFormat
TranslatableMarkup::__construct

protected formatPlural($count, $singular, $plural, array $args = [], array $options = [])

Formats a string containing a count of items.

Parameters

$count
$singular
$plural
array $args
array $options

See also

TranslationInterface::formatPlural

protected getNumberOfPlurals($langcode = NULL)

Returns the number of plurals supported by a given language.

Parameters

$langcode

See also

PluralFormulaInterface::getNumberOfPlurals

protected TranslationInterface getStringTranslation()

Gets the string translation service.

Return Value

TranslationInterface

The string translation service.

$this setStringTranslation(TranslationInterface $translation)

Sets the string translation service to use.

Parameters

TranslationInterface $translation

The string translation service.

Return Value

$this

__sleep()

{@inheritdoc}

__wakeup()

{@inheritdoc}

setMessenger(MessengerInterface $messenger)

Sets the messenger.

Parameters

MessengerInterface $messenger

The messenger.

MessengerInterface messenger()

Gets the messenger.

Return Value

MessengerInterface

The messenger.

static setAttributes(array $element, array $class = [])

Sets a form element's class attribute.

Adds 'required' and 'error' classes as needed.

Parameters

array $element

The form element.

array $class

Array of new class names to be added.

static array preRenderGroup(array $element)

Adds members of this group as actual elements for rendering.

Parameters

array $element

An associative array containing the properties and children of the element.

Return Value

array

The modified element with all group members.

static array processAjaxForm(array $element, FormStateInterface $form_state, array $complete_form)

Form element processing handler for the #ajax form property.

This method is useful for non-input elements that can be used in and outside the context of a form.

Parameters

array $element

An associative array containing the properties of the element.

FormStateInterface $form_state

The current state of the form.

array $complete_form

The complete form structure.

Return Value

array

The processed element.

static array preRenderAjaxForm(array $element)

Adds Ajax information about an element to communicate with JavaScript.

If #ajax is set on an element, this additional JavaScript is added to the page header to attach the Ajax behaviors. See ajax.js for more information.

Parameters

array $element

An associative array containing the properties of the element. Properties used:

  • ajax['event']

  • ajax['prevent']

  • ajax['url']

  • ajax['callback']

  • ajax['options']

  • ajax['wrapper']

  • ajax['parameters']

  • ajax['effect']

  • ajax['accepts']

Return Value

array

The processed element with the necessary JavaScript attached to it.

static array processGroup(array $element, FormStateInterface $form_state, array $complete_form)

Arranges elements into groups.

This method is useful for non-input elements that can be used in and outside the context of a form.

Parameters

array $element

An associative array containing the properties and children of the element. Note that $element must be taken by reference here, so processed child elements are taken over into $form_state.

FormStateInterface $form_state

The current state of the form.

array $complete_form

The complete form structure.

Return Value

array

The processed element.

static mixed valueCallback(array $element, mixed $input, FormStateInterface $form_state)

Determines how user input is mapped to an element's #value property.

Parameters

array $element

An associative array containing the properties of the element.

mixed $input

The incoming input to populate the form element. If this is FALSE, the element's default value should be returned.

FormStateInterface $form_state

The current state of the form.

Return Value

mixed

The value to assign to the element.

static array processPattern(array $element, FormStateInterface $form_state, array $complete_form)

process callback for #pattern form element property.

Parameters

array $element

An associative array containing the properties and children of the generic input element.

FormStateInterface $form_state

The current state of the form.

array $complete_form

The complete form structure.

Return Value

array

The processed element.

static validatePattern($element, FormStateInterface $form_state, array $complete_form)

element_validate callback for #pattern form element property.

Parameters

$element

An associative array containing the properties and children of the generic form element.

FormStateInterface $form_state

The current state of the form.

array $complete_form

The complete form structure.

static array processAutocomplete(array $element, FormStateInterface $form_state, array $complete_form)

Adds autocomplete functionality to elements.

This sets up autocomplete functionality for elements with an

autocomplete_route_name property, using the #autocomplete_route_parameters

property if present.

For example, suppose your autocomplete route name is 'mymodule.autocomplete' and its path is '/mymodule/autocomplete/{a}/{b}'. In a form array, you would create a text field with properties:

Parameters

array $element

The form element to process. Properties used:

  • autocomplete_route_name: A route to be used as callback URL by the

    autocomplete JavaScript library.

  • autocomplete_route_parameters: The parameters to be used in

    conjunction with the route name.

FormStateInterface $form_state

The current state of the form.

array $complete_form

The complete form structure.

Return Value

array

The form element.

static protected array datetimeRangeYears(string $string, object $date = NULL)

Specifies the start and end year to use as a date range.

Handles a string like -3:+3 or 2001:2010 to describe a dynamic range of minimum and maximum years to use in a date selector.

Centers the range around the current year, if any, but expands it far enough so it will pick up the year value in the field in case the value in the field is outside the initial range.

Parameters

string $string

A min and max year string like '-3:+1' or '2000:2010' or '2000:+3'.

object $date

(optional) A date object to test as a default value. Defaults to NULL.

Return Value

array

A numerically indexed array, containing the minimum and maximum year described by this pattern.

static protected string getElementTitle(array $element, array $complete_form)

Returns the most relevant title of a datetime element.

Since datetime form elements often consist of combined date and time fields the element title might not be located on the element itself but on the parent container element.

Parameters

array $element

The element being processed.

array $complete_form

The complete form structure.

Return Value

string

The title.

mixed doTrustedCallback(callable $callback, array $args, $message, string $error_type = TrustedCallbackInterface::THROW_EXCEPTION, string $extra_trusted_interface = NULL)

Performs a callback.

If the callback is trusted the callback will occur. Trusted callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or $extra_trusted_interface or be an anonymous function. If the callback is not trusted then whether or not the callback is called and what type of error is thrown depends on $error_type. To provide time for dependent code to use trusted callbacks use TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION and then at a later date change this to TrustedCallbackInterface::THROW_EXCEPTION.

Parameters

callable $callback

The callback to call. Note that callbacks which are objects and use the magic method __invoke() are not supported.

array $args

The arguments to pass the callback.

$message

The error message if the callback is not trusted. If the message contains "%s" it will be replaced in with the resolved callback.

string $error_type

(optional) The type of error to trigger. One of:

  • TrustedCallbackInterface::THROW_EXCEPTION
  • TrustedCallbackInterface::TRIGGER_WARNING
  • TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION Defaults to TrustedCallbackInterface::THROW_EXCEPTION.
string $extra_trusted_interface

(optional) An additional interface that if implemented by the callback object means any public methods on that object are trusted.

Return Value

mixed

The callback's return value.

Exceptions

UntrustedCallbackException

See also

TrustedCallbackInterface

array getInfo()

Returns the element properties for this element.

Return Value

array

An array of element properties. See \Drupal\Core\Render\ElementInfoManagerInterface::getInfo() for documentation of the standard properties of all elements, and the return value format.

static array processDatetime(array $element, FormStateInterface $form_state, array $complete_form)

Expands a datetime element type into date and/or time elements.

All form elements are designed to have sane defaults so any or all can be omitted. Both the date and time components are configurable so they can be output as HTML5 datetime elements or not, as desired.

Examples of possible configurations include: HTML5 date and time:

date_date_element = 'date';

#date_time_element = 'time';

HTML5 datetime:

date_date_element = 'datetime';

#date_time_element = 'none';

HTML5 time only:

date_date_element = 'none';

#date_time_element = 'time'

Non-HTML5:

date_date_element = 'text';

#date_time_element = 'text';

Required settings:

  • default_value: A DrupalDateTime object, adjusted to the proper local

    timezone. Converting a date stored in the database from UTC to the local zone and converting it back to UTC before storing it is not handled here. This element accepts a date as the default value, and then converts the user input strings back into a new date object on submission. No timezone adjustment is performed. Optional properties include:

  • date_date_format: A date format string that describes the format that

    should be displayed to the end user for the date. When using HTML5 elements the format MUST use the appropriate HTML5 format for that element, no other format will work. See the DateFormatterInterface::format() function for a list of the possible formats and HTML5 standards for the HTML5 requirements. Defaults to the right HTML5 format for the chosen element if an HTML5 element is used, otherwise defaults to DateFormat::load('html_date')->getPattern().

  • date_date_element: The date element. Options are:

    • datetime: Use the HTML5 datetime element type.
    • datetime-local: Use the HTML5 datetime-local element type.
    • date: Use the HTML5 date element type.
    • text: No HTML5 element, use a normal text field.
    • none: Do not display a date element.
  • date_date_callbacks: Array of optional callbacks for the date element.

  • date_time_element: The time element. Options are:

    • time: Use an HTML5 time element type.
    • text: No HTML5 element, use a normal text field.
    • none: Do not display a time element.
  • date_time_format: A date format string that describes the format that

    should be displayed to the end user for the time. When using HTML5 elements the format MUST use the appropriate HTML5 format for that element, no other format will work. See the DateFormatterInterface::format() function for a list of the possible formats and HTML5 standards for the HTML5 requirements. Defaults to the right HTML5 format for the chosen element if an HTML5 element is used, otherwise defaults to DateFormat::load('html_time')->getPattern().

  • date_time_callbacks: An array of optional callbacks for the time

    element. Can be used to add a jQuery timepicker or an 'All day' checkbox.

  • date_year_range: A description of the range of years to allow, like

    '1900:2050', '-3:+3' or '2000:+3', where the first value describes the earliest year and the second the latest year in the range. A year in either position means that specific year. A +/- value describes a dynamic value that is that many years earlier or later than the current year at the time the form is displayed. Used in HTML5 min/max date settings. Defaults to '1900:2050'.

  • date_increment: The interval (step) to use when incrementing or

    decrementing time, in seconds. For example, if this value is set to 30, time increases (or decreases) in steps of 30 seconds (00:00:00, 00:00:30, 00:01:00, and so on.) If this value is a multiple of 60, the "seconds"-component will not be shown in the input. Used for HTML5 step values. Defaults to 1 to show every second.

  • date_timezone: The Time Zone Identifier (TZID) to use when displaying

    or interpreting dates, i.e: 'Asia/Kolkata'. Defaults to the value returned by date_default_timezone_get().

Example usage:

Parameters

array $element

The form element whose value is being processed.

FormStateInterface $form_state

The current state of the form.

array $complete_form

The complete form structure.

Return Value

array

The form element whose value has been processed.

See also

DateFormatterInterface::format

static validateDatetime(array $element, FormStateInterface $form_state, array $complete_form)

Validation callback for a datetime element.

If the date is valid, the date object created from the user input is set in the form for use by the caller. The work of compiling the user input back into a date object is handled by the value callback, so we can use it here. We also have the raw input available for validation testing.

Parameters

array $element

The form element whose value is being validated.

FormStateInterface $form_state

The current state of the form.

array $complete_form

The complete form structure.

static string formatExample(string $format)

Creates an example for a date format.

This is centralized for a consistent method of creating these examples.

Parameters

string $format

The date format.

Return Value

string

static protected string getHtml5DateFormat(array $element)

Retrieves the right format for an HTML5 date element.

The format is important because these elements will not work with any other format.

Parameters

array $element

The $element to assess.

Return Value

string

Returns the right format for the date element, or the original format if this is not an HTML5 element.

static protected string getHtml5TimeFormat(array $element)

Retrieves the right format for an HTML5 time element.

The format is important because these elements will not work with any other format.

Parameters

array $element

The $element to assess.

Return Value

string

Returns the right format for the time element, or the original format if this is not an HTML5 element.