Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<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>
 

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