| Form-Factory documentation | Contained in the Form-Factory distribution. |
Form::Factory::Interface - Role for form interface implementations
version 0.020
package MyApp::Interface::MyUI;
use Moose;
with qw( Form::Factory::Interface );
sub render_control {
my ($self, $control, %options) = @_;
# Draw $control for user
}
sub consume_control {
my ($self, $control, %options) = @_;
# Consume values from user to fill $control
}
package Form::Factory::Interface::Custom::MyUI;
sub register_implementation { 'MyApp::Interface::MyUI' }
Defines the contract form interface classes must fulfill.
A place for remembering things.
See Form::Factory::Stash.
my $action = $interface->new_action('Some::Action::Class', \%options);
Given the name of an action class, it initializes the class for use with this interface. The %options are passed to the constructor.
my $control = $interface->new_control($name, \%options);
Given the short name for a control and a hash reference of initialization arguments, return a fully initialized control.
The following methods need to implement the following methods.
$interface->render_control($control, %options);
This method is used to render the control in the current form.
$interface->consume_control($control, %options);
This method is used to consume the values input for a current form.
Here's a list of controls and the classes they represent:
Andrew Sterling Hanenkamp, <hanenkamp@cpan.org>
Copyright 2009 Qubling Software LLC.
This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself.
| Form-Factory documentation | Contained in the Form-Factory distribution. |
package Form::Factory::Interface; BEGIN { $Form::Factory::Interface::VERSION = '0.020'; } use Moose::Role; use Carp (); use Form::Factory::Stasher::Memory; requires qw( render_control consume_control );
has stasher => ( is => 'ro', does => 'Form::Factory::Stasher', required => 1, default => sub { Form::Factory::Stasher::Memory->new }, handles => [ qw( stash unstash ) ], );
sub new_action { my ($self, $class_name, $args) = @_; Class::MOP::load_class($class_name) or Carp::croak("cannot load $class_name: $@"); return $class_name->new( %$args, form_interface => $self ); }
sub new_control { my ($self, $name, $args) = @_; my $class_name = Form::Factory->control_class($name); return unless $class_name; return $class_name->new($args); }
1;