Datetime
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
Constructs a \Drupal\Component\Plugin\PluginBase object.
Translates a string to the current language or to a given language.
Formats a string containing a count of items.
Returns the number of plurals supported by a given language.
Gets the string translation service.
Sets a form element's class attribute.
Adds members of this group as actual elements for rendering.
Form element processing handler for the #ajax form property.
Adds Ajax information about an element to communicate with JavaScript.
Arranges elements into groups.
Determines how user input is mapped to an element's #value property.
process callback for #pattern form element property.
element_validate callback for #pattern form element property.
Adds autocomplete functionality to elements.
Specifies the start and end year to use as a date range.
Returns the most relevant title of a datetime element.
Performs a callback.
Returns the element properties for this element.
Expands a datetime element type into date and/or time elements.
Validation callback for a datetime element.
Creates an example for a date format.
Retrieves the right format for an HTML5 date 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.
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.
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
protected
formatPlural($count, $singular, $plural, array $args = [], array $options = [])
Formats a string containing a count of items.
protected
getNumberOfPlurals($langcode = NULL)
Returns the number of plurals supported by a given language.
protected TranslationInterface
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.
MessengerInterface
messenger()
Gets the messenger.
static
setAttributes(array $element, array $class = [])
Sets a form element's class attribute.
Adds 'required' and 'error' classes as needed.
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.
This method is useful for non-input elements that can be used in and outside the context of a form.
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.
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.
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.
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:
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.
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.
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.
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.
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:
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.
static string
formatExample(string $format)
Creates an example for a date format.
This is centralized for a consistent method of creating these examples.
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.
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.