NAME

SyForm - SyForm - a role driven form management

VERSION

version 0.007

SYNOPSIS

use SyForm;

my $form = SyForm->create([
  'username' => {
    isa => 'Str',
    required => 1,
    label => 'Your name',
  },
  'age' => {
    isa => 'Int',
    label => 'Your age',
  },
  'unchecked' => {
    label => 'Unchecked',
  },
]);

$form->does('SyForm'); # its all roles
$form->field('username')->does('SyForm::Field');
$form->field('username')->does('SyForm::Field::Label');
$form->field('username')->does('SyForm::Field::Verify');

# Roles are only automatically loaded on requirement
!$form->field('unchecked')->does('SyForm::Field::Verify');

my $view = $form->process( username => 'YoCoolCopKiller', age => 13 );

# or ...
# $values = $form->process_values(%args);
# my $value = $values->value;
# !$values->can('success'); # values are only the input
# $results = $form->process_results(%args);
# my $result = $results->get_result('username');
# my $value = $results->values->get_value('username');
# my $success = $result->success # result is after check

for my $field_name (@{$view->field_names}) {
  my $input_value = $view->field($field_name)->value;
  if ($view->success) {
    my $verified_result = $view->field($field_name)->result;  
  } else {
    # result is filled for all valid fields, even on invalid form
    my $verified_result_if_exist = $view->field($field_name)->result;
  }
  # for access to the main SyForm::Field of the view field
  my $syform_field = $view->field($field_name)->field;
}

DESCRIPTION

SyForm is developed for SyContent.

SyForm has many SyForm::Field. You get a form object with calling create([@fields], %form_args) on SyForm.

With SyForm::Process (automatically added) you can give it process_args via calling of process(%args) on your form object that you get from the create.

This call to process creates internally a SyForm::Values out of the process args together with the help of the fields. Those again use this to produce a SyForm::Results with the final results of the process.

Those end up in a SyForm::View together with a SyForm::ViewField for every SyForm::Field that is used in the process flow. The view field allows easy access to the SyForm::Values values, the SyForm::Results results and the actually SyForm::Field definition, to get a complete access of all variables in the rendering.

SUPPORT

IRC

Join #sycontent on irc.perl.org. Highlight Getty for fast reaction :).

Repository

http://github.com/SyContent/SyForm
Pull request and additional contributors are welcome

Issue Tracker

http://github.com/SyContent/SyForm/issues

AUTHOR

Torsten Raudssus <torsten@raudss.us>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Torsten Raudssus.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.