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

FreeBSD Manual Pages

  
 
  

home | help
Rose::HTML::Form::FieRUser:Contributed:PerldDocumentationNAME
       Rose::HTML::Form::Field::DateTime::Split::MonthDayYear -	Compound field
       for dates with separate text fields for month, day, and year.

SYNOPSIS
	   $field =
	     Rose::HTML::Form::Field::DateTime::Split::MonthDayYear->new(
	       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"

	   $field->input_value('blah');

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

	   $field->input_value('4/30/1980');

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

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

	   print $field->html;
	   ...

DESCRIPTION
       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	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.

       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.

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::MDYHMS
	   A compound field that includes other	compound fields	and 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::MonthDayYear(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::MonthDayYear&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help