---
name: "HTML::FormFu::Element::Date"
section: "3pm"
platform: "linux"
package: "libhtml-formfu-perl"
version: "2.07000-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTML::FormFu::Element::Date"
---

# HTML::FormFu::Element::Date(3pm)

3 select menu multi-field

## NAME

HTML::FormFu::Element::Date - 3 select menu multi-field

## VERSION

version 2.07

## SYNOPSIS

```
    ---
    elements:
      - type: Date
        name: birthdate
        label: 'Birthdate:'
        day:
          prefix: "- Day -"
        month:
          prefix: "- Month -"
        year:
          prefix: "- Year -"
          less: 70
          plus: 0
        auto_inflate: 1
```

## DESCRIPTION

Creates a multi element containing 3 select menus for the day, month and year.

A date element named `"foo"` would result in 3 select menus with the names `"foo_day"`, `"foo_month"` and `"foo_year"`. The names can instead be overridden by the `"name"` value in "day", "month" and "year".

This element automatically merges the input parameters from the select menu into a single date parameter (and doesn't delete the individual menu's parameters).

## METHODS

### default

Arguments: DateTime object

Arguments: `$date_string`

Accepts either a DateTime object, or a string containing a date, matching the "strftime" format. Overwrites any default value set in "day", "month" or "year".

### default\_natural

Arguments: `$date_string`

```
    - type: Date
      default_natural: 'today'
```

Accepts a date/time string suitable for passing to "parse\_datetime" in DateTime::Format::Natural.

### default\_datetime\_args

```
    - type: Date
      default_natural: 'today'
      default_datetime_args:
        set_time_zone: 'Europe/London'
```

Accepts a hashref of method-names / values that will be called on the "default" DateTime object, before the select fields' values are set from it.

### strftime

Default Value: "%d-%m-%Y"

The format of the date as returned by "params" in HTML::FormFu, if "auto\_inflate" is not set.

If "auto\_inflate" is used, this is still the format that the parameter will be in prior to the DateTime inflator being run; which is what any Filters and Constraints will receive.

### day

Arguments: \\%setting

Set values effecting the `"day"` select menu. Known keys are:

*name*

Override the auto-generated name of the select menu.

*default*

Set the default value of the select menu

*prefix*

Arguments: `$value`

Arguments: \\@values

A string or arrayref of strings to be inserted into the start of the select menu.

Each value is only used as the label for a select item - the value for each of these items is always the empty string `''`.

*prefix\_loc*

Arguments: `$localization_key`

Arguments: \\@localization\_keys

A localized string or arrayref of localized strings to be inserted into the start of the select menu.

Each value is localized and then only used as the label for a select item - the value for each of these items is always the empty string `''`.

Use `"prefix_loc"` insted of `"prefix"`.

### month

Arguments: \\%setting

Set values effecting the `"month"` select menu. Known keys are:

*name*

Override the auto-generated name of the select menu.

*default*

Set the default value of the select menu

*prefix*

Arguments: `$value`

Arguments: \\@values

A string or arrayref of strings to be inserted into the start of the select menu.

Each value is only used as the label for a select item - the value for each of these items is always the empty string `''`.

*prefix\_loc*

Arguments: `$localization_key`

Arguments: \\@localization\_keys

A localized string or arrayref of localized strings to be inserted into the start of the select menu.

Each value is localized and then only used as the label for a select item - the value for each of these items is always the empty string `''`.

Use `"prefix_loc"` insted of `"prefix"`.

*names*

Arguments: \\@months

A list of month names used for the month menu.

If not set, the list of month names is obtained from DateTime::Locale using the locale set in "languages" in HTML::FormFu.

*short\_names*

Argument: bool

If true (and `"months"` is not set) the list of abbreviated month names is obtained from DateTime::Locale using the locale set in "languages" in HTML::FormFu.

### year

Arguments: \\%setting

Set values effecting the `"year"` select menu. Known keys are:

*name*

Override the auto-generated name of the select menu.

*default*

Set the default value of the select menu

*prefix*

Arguments: `$value`

Arguments: \\@values

A string or arrayref of strings to be inserted into the start of the select menu.

Each value is only used as the label for a select item - the value for each of these items is always the empty string `''`.

*prefix\_loc*

Arguments: `$localization_key`

Arguments: \\@localization\_keys

A localized string or arrayref of localized strings to be inserted into the start of the select menu.

Each value is localized and then only used as the label for a select item - the value for each of these items is always the empty string `''`.

Use `"prefix_loc"` insted of `"prefix"`.

*list*

Arguments: \\@years

A list of years used for the year menu.

If this is set, `"reference"`, `"less"` and `"plus"` are ignored.

*reference*

Arguments: `$year`

Default Value: the current year, calculated from **time()**

If `"list"` is not set, the list is created from the range of `"reference - year_less"` to `"reference + year_plus"`.

*less*

Arguments: `$count`

Default Value: 0

*plus*

Arguments: `$count`

Default Value: 10

*reverse*

Arguments: bool

Default Value: 0

If true, the list of years is listed in reverse (decreasing) order.

### field\_order

Arguments: \\@fields

Default Value: \['day', 'month', 'year'\]

Specify the order of the date fields in the rendered HTML.

Not all 3 fields are required. No single field can be used more than once.

### auto\_inflate

If true, a DateTime Inflator will automatically be added to the element, and it will be given a formatter so that stringification will result in the format specified in "strftime".

If you require the DateTime Inflator to have a different stringification format to the format used internally by your Filters and Constraints, then you must explicitly add your own DateTime Inflator, rather than using "auto\_inflate".

## CAVEATS

Although this element inherits from HTML::FormFu::Element::Block, its behaviour for the methods filter/filters, constraint/constraints, inflator/inflators, validator/validators and transformer/transformers is more like that of a field element, meaning all processors are added directly to the date element, not to its select-menu child elements.

This element's get\_elements and get\_all\_elements are inherited from HTML::FormFu::Element::Block, and so have the same behaviour. However, it overrides the `"get_fields|HTML::FormFu/get_fields"` method, such that it returns both itself and its child elements.

## SEE ALSO

Is a sub-class of, and inherits methods from HTML::FormFu::Role::Element::Field, HTML::FormFu::Element::Multi, HTML::FormFu::Element::Block, HTML::FormFu::Element

HTML::FormFu

## AUTHOR

Carl Franks, `"cfranks@cpan.org"`

## LICENSE

This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.

## AUTHOR

Carl Franks \<cpan@fireartist.com\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2018 by Carl Franks.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
