Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Rose::HTML::Form::FielUseraContributed:Perl:Documen:DateTime::Split::MDYHMS(3)

NAME
       Rose::HTML::Form::Field::DateTime::Split::MDYHMS	- Compound field for
       dates with separate text	fields for month, day, year, hour, minute, and
       second, and a pop-up menu for AM/PM.

SYNOPSIS
	   $field =
	     Rose::HTML::Form::Field::DateTime::Split::MDYHMS->new(
	       label   => 'When',
	       name    => 'when',
	       default => '12/31/2002 6:30 p.m.');

	   print $field->field('time.minute')->internal_value; # "30"
	   print $field->field('date.day')->internal_value;    # "31"

	   print $field->internal_value; # "2002-12-31T18:30:00"
	   print $field->output_value;	 # "12/31/2002 06:30:00	PM"

	   $field->input_value('blah');

	   # "Could not	parse date: blah"
	   $field->validate or warn $field->error;

	   $field->input_value('4/30/1980 1:23pm');

	   $dt = $field->internal_value; # DateTime object

	   print $dt->hour;	# 13
	   print $dt->day_name;	# Wednesday

	   print $field->html;
	   ...

DESCRIPTION
       Rose::HTML::Form::Field::DateTime::Split::MDYHMS	is a compound field
       for dates with separate text fields for month, day, year, hour, minute,
       and second, and a pop-up	menu for AM/PM.

       This class inherits (indirectly)	from both
       Rose::HTML::Form::Field::DateTime and
       Rose::HTML::Form::Field::Compound.  This	doesn't	quite work out as
       expected	without	a bit of tweaking.  We'd 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, there's 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.

       Inheritance shenanigans aside, this class is a good example of a
       compound	field that includes other compound fields and also provides an
       "inflated" internal value (a DateTime object).  This is the most
       complex custom field example in this distribution.  It does everything:
       nested compound fields, validation, inflate/deflate, and
       coalesce/decompose.

       The date	portion	of the field is	handled	by a
       Rose::HTML::Form::Field::DateTime::Split::MonthDayYear field, and the
       time portion is handled by a
       Rose::HTML::Form::Field::Time::Split::HourMinuteSecond field.

       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.

OBJECT METHODS
       date_parser [PARSER]
	   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().

       time_zone [TZ]
	   If the parser object	has a time_zone() method, this method simply
	   calls it, passing all arguments.  Otherwise,	undef is returned.

SEE ALSO
       Other examples of custom	fields:

       Rose::HTML::Form::Field::Email
	   A text field	that only accepts valid	email addresses.

       Rose::HTML::Form::Field::Time
	   Uses	inflate/deflate	to coerce input	into a fixed format.

       Rose::HTML::Form::Field::DateTime
	   Uses	inflate/deflate	to convert input to a DateTime object.

       Rose::HTML::Form::Field::DateTime::Range
	   A compound field whose internal value consists of more than one
	   object.

       Rose::HTML::Form::Field::PhoneNumber::US::Split
	   A simple compound field that	coalesces multiple subfields into a
	   single value.

       Rose::HTML::Form::Field::DateTime::Split::MonthDayYear
	   A compound field that uses inflate/deflate convert input from
	   multiple subfields into a DateTime object.

AUTHOR
       John C. Siracusa	(siracusa@gmail.com)

LICENSE
       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.32.1		   Rose::HTML::Form::Field::DateTime::Split::MDYHMS(3)

NAME | SYNOPSIS | DESCRIPTION | OBJECT METHODS | SEE ALSO | AUTHOR | LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Rose::HTML::Form::Field::DateTime::Split::MDYHMS&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help