HTML::TurboForm - fast and compact HTML Form Class
to start with, two simple examples of how to use turboform. I am still working on both the classes and the docs so please be patient.
my $options; $options->{ 'label1' }='1'; $options->{ 'label2' }='2'; $options->{ 'label3' }='3'; $form->add_element({ type => 'Html', text =>'<center>' }); $form->add_element({ type => 'Text', name => 'texttest', label => 'element1' } ); $form->add_element({ type => 'Text', name => 'texttest2', label => 'vergleichselement' } ); $form->add_element({ type => 'Textarea', name => 'textareatest', label => 'Areahalt:' } ); $form->add_element({ type => 'Submit', name => 'freeze', label => ' ', value=>'einfrieren' } ); $form->add_element({ type => 'Submit', name => 'unfreeze', label => ' ', value=>'normal' } ); $form->add_element({ type => 'Checkbox', name => 'boxtest', label => 'auswählen', options => $options, params =>{ 'listmode'=>'' } } ); $form->add_element({ type => 'Html', text =>'<hr>' }); $form->add_element({ type => 'Select', name => 'selecttest', label => 'selectieren', options => $options } ); $form->add_element({ type => 'Select', name => 'selecttest2', label => 'selectieren', options => $options, attributes => { 'multiple'=>'' , 'size'=>'3' } } ); $form->add_element({ type => 'Text', name => 'mailtest', label => 'E-Mail' } ); $form->add_element({ type => 'Radio', name => 'tadiotest', label => 'radioteile', options => $options, params =>{ 'listmode', 'norow'} } ); $form->add_element({ type => 'Date', name => 'datetest', label => 'Datum', params=>{ startyear=> '2000' , endyear => '2020' } } ); $form->add_element({ type => 'Image', name => 'imagetest', label => 'Bild', width=>'400', height=>'300', thumbnail => { width => '60', height=>'80' }, savedir=>'/home/whocares/catalyst/formproject/root/static/images/temp', loadurl=>'/static/images/temp' } ); $form->add_constraint({ type=> 'Equation', name=> 'texttest', text=> 'kein Vergleich', params=>{ operator => 'eq', comp=>$form->get_value('texttest2') } }); $form->add_constraint({ type=> 'Required', name=> 'boxtest', text=> 'du musst schon was auswählen' }); $form->add_constraint({ type=> 'Date', name=> 'datetest', text=> 'das ist doch kein datum' }); $form->add_constraint({ type=> 'Email', name=> 'mailtest', text=> 'ungültige Mailadresse' }); $form->add_element({ type => 'Html', text =>'</center>' }); $form->freeze_all() if ($form->submitted() eq 'freeze'); $c->stash->{form} = $form->render(); $c->stash->{template}='formtest/formtest.tt'; if ($form->submitted() eq 'freeze') { my @cols= ('txt1','date','txt2','checkboxtest'); my $data=$form->map_value(@cols); }
my $form= new HTML::TurboForm($c->req->params); $form->load('test.yml'); my $text=$form->render(); if ($form->submitted eq 'freeze') {} Sample yml-file:
--- languages: - de elements: - type: Html text: <center>
- type: Text name: messageausyml label: ausyml - type: Text name: txt1 label: sampleinput - type: Text name: txt2 label: whatever to compare - type: Checkbox label: chooser name: checkboxtest options: label1: 1 label2: 2 - type: Html text: <div class="form_row"><hr></div> - type: Radio label: radiochooser options: radio1: 1 radio2: 2 - type: Submit name: freeze value: einfrieren - type: Submit name: defreeze value: normal - type: Date label: Datum name: date params: startyear: 2000 endyear: 2010 - type: Html text: </center>
constraints:
- type: Required name: messageausyml text: <font size=2><b>mandatory field</b></font> - type: Date name: date text: <font size=2><b>must be a correct date</b></font> - type: Equation name: txt1 text: <font size=2><b>must be higher</b></font> params: operator: < compvalue: txt2
HTML::TurboForm was designed as a small, fast and compact Form Class to use with catalyst in order to easily create any needed Form. I know there a quite a lot of classes out there which do the same but i wasn't quite content with what i found. They were either too slow or complicated or both.
Arguments: $request
Creates new Form Object, needs Request Arguments to fill out Form Elements. To do so it's very important that the form elements have the same names as the request parameters.
Arguments: $params
Adds a new Contraint to the Form. Constraints can be date, required or any other constraint class object. Only if they successfully match the given constraint rule the form will return valid.
Arguments: $fn
Loads a form from a given YML File.
Arguments: $name
will unIgnore an element so it will be rendered normally
will Ignore an element so it won't be rendered and in effect invisible, it's value will be given to the form as hidden value
Will add a new Form Element, for example a new text element or select box or whatever.
Arguments: none
Renders the form. Will retrun the HTML Code for the form including error messages.
Will be true if the form is correctly filled out by user, otherwise it returns false and shows the corresponding error message(s).
Arguments: $name, $option
Adds option to HTML elements that needs them, for example select boxes.
Will disable the HTML Element identified by name for viewing purposes only.
Freezes the whole form.
Unfreezes certain Element.
Returns Value of Eelement by name
Arguments: $data
fills form with values form hash.
Arguments: @columns
Expects an array with column names. This method is used to map the request and form elements to the columns of a database table.
Thorsten Drobnik, camelcase@hotmail.com
This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
1 POD Error
The following errors were encountered while parsing the POD:
Non-ASCII character seen before =encoding in ''auswählen','. Assuming UTF-8
To install HTML::TurboForm, copy and paste the appropriate command in to your terminal.
cpanm
cpanm HTML::TurboForm
CPAN shell
perl -MCPAN -e shell install HTML::TurboForm
For more information on module installation, please visit the detailed CPAN module installation guide.