Manual Reference Pages - ROSE::HTML::FORM::FIELD::DATETIME::SPLIT::MONTHDAYYEAR (3)
Rose::HTML::Form::Field::DateTime::Split::MonthDayYear - Compound field for dates with separate text fields for month, day, and year.
label => Date,
name => date,
default => 12/31/2002);
print $field->field(month)->internal_value; # "12"
print $field->internal_value; # "2002-12-31T20:00:00"
print $field->output_value; # "2002-12-31 08:00:00 PM"
# "Could not parse date: blah"
$field->validate or warn $field->error;
$dt = $field->internal_value; # DateTime object
print $dt->hour; # 17
print $dt->day_name; # Wednesday
Rose::HTML::Form::Field::DateTime::Split::MonthDayYear a compound field for dates with separate text fields for month, day, and year.
This class inherits (indirectly) from both Rose::HTML::Form::Field::DateTime and Rose::HTML::Form::Field::Compound. This doesnt quite work out as expected without a bit of tweaking. Wed like inflate_value() and validate() methods to be inherited from Rose::HTML::Form::Field::DateTime, but everything else to be inherited from Rose::HTML::Form::Field::Compound.
To solve this problem, theres an intermediate class that imports the correct set of methods. This class then inherits from the intermediate class. This works, and isolates the tricky bits to a single intermediate class, but it also demonstrates the problems that can crop up when multiple inheritance is combined with a strong aversion to code duplication.
Inheritence shenanigans aside, this class is a good example of a compound field that also provides an inflated internal value (a DateTime object).
It is important that this class (indirectly) inherits from Rose::HTML::Form::Field::Compound. See the Rose::HTML::Form::Field::Compound documentation for more information.
Get or set the date parser object. This object must include a parse_datetime() method that takes a single string as an argument and returns a DateTime object, or undef if parsing fails.
If the parser object has an error() method, it will be called to set the error message after a failed parsing attempt.
The parser object defaults to Rose::DateTime::Parser->new().
If the parser object has a time_zone() method, this method simply calls it, passing all arguments. Otherwise, undef is returned.
Other examples of custom fields:
John C. Siracusa (email@example.com)
Copyright (c) 2010 by John C. Siracusa. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
|perl v5.20.3 ||ROSE::HTML::FORM::FIELD::DATETIME::SPLIT::MONTHDAYYEAR (3) ||2015-03-17 |
Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.