Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You can use use <code>HTML::FormHandler::Moose</code> and <code>HTML::FormHandler::Model::DBIC</code> and get some nice forms.</p> <p>As a simple example:</p> <p>The form definition:</p> <pre><code>package MyStats::Form::Datetime ; use HTML::FormHandler::Moose ; extends 'HTML::FormHandler::Model::DBIC' ; use Date::Calc qw(Today_and_Now) ; has_field 'datetimeid' =&gt; ( label =&gt; 'ID' ) ; has_field 'datetime' =&gt; ( type =&gt; 'Text', apply =&gt; [ { transform =&gt; \&amp;transform_dt } ] , deflation =&gt; \&amp;deflation_dt , required =&gt; 1 ) ; has_field 'submit' =&gt; ( type =&gt; 'Submit' , value =&gt; 'Speichern' ) ; # These are the fields of the table datetime sub transform_dt { my ( $dt ) = @_ ; my @d = ( $dt =~ m/(\d{1,2})\.(\d{1,2})\.(\d{4})\s+(\d{1,2}):(\d{1,2})/ ) ; return sprintf( '%04d-%02d-%02d %02d:%02d:00' , @d[2,1,0,3,4] ) ; } sub deflation_dt { my ( $dt ) = @_ ; my @d = ( $dt =~ m/(\d{4})-(\d{2})-(\d{2})\s+(\d{1,2}):(\d{1,2})/ ) ; if( ! @d ) { @d = Today_and_Now() ; } return sprintf( '%02d.%02d.%04d %02d:%02d:00' , @d[2,1,0,3,4] ) ; } 1 ; </code></pre> <p>And the usage in a controller:</p> <pre><code>package MyStats::Controller::Datetime ; use Moose ; use namespace::autoclean ; BEGIN { extends 'Catalyst::Controller' ; } use MyStats::Form::Datetime ; has 'form' =&gt; ( isa =&gt; 'MyStats::Form::Datetime' , is =&gt; 'rw' , lazy =&gt; 1 , default =&gt; \&amp;new_datetime_form ) ; sub new_datetime_form { MyStats::Form::Datetime-&gt;new( css_class =&gt; 'datetimeform' , name =&gt; 'datetimeform' ) ; } ... sub add :Local :Args(0) { my ( $self , $ctx ) = @_ ; my $data = $ctx-&gt;model( 'MyStatsDB::Datetime' )-&gt;new_result( {} ) ; $ctx-&gt;stash( template =&gt; 'datetime/add.tt2' , form =&gt; $self-&gt;form ) ; $ctx-&gt;bread_crumb( { name =&gt; 'Datum/Zeit eingeben' , location =&gt; '/datetime/add' } ) ; $ctx-&gt;req-&gt;param( 'datetimeid' , undef ) if $ctx-&gt;req-&gt;param( 'datetimeid' ) ; return unless $self-&gt;form-&gt;process( item =&gt; $data , params =&gt; $ctx-&gt;req-&gt;params ) ; $ctx-&gt;flash( message =&gt; 'Neuer Datensatz ' . $data-&gt;datetimeid . ' angelegt.' , id_add =&gt; $data-&gt;datetimeid ) ; $ctx-&gt;res-&gt;redirect( $ctx-&gt;uri_for( '/datetime' ) ) ; } ... __PACKAGE__-&gt;meta-&gt;make_immutable ; 1 ; </code></pre> <p>Works good.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload