| Form::Sensible::Reflector::DBIC |
this is an internal and private method used solely for organizing the hashmap of datatypes to Form::Sensible types. Use something like this to organize your own reflector subclass datatypes.
get_field_types_for($datatype)This gets field definitions for a given datatype and returns them in hashref form.
get_fieldnames()
=cutsub get_fieldnames { my ( $self, $form, $resultset ) = @_; return $resultset->result_source->columns; }
get_field_definition()
=cutsub get_field_definition { my ( $self, $form, $resultset, $name ) = @_;
## check to see if it's a primary key
my @pks = $resultset->result_source->primary_columns;
my $field = $resultset->result_source->column_info($name);
if ( scalar( grep /$name/, @pks ) ) {
return {
name => $name,
field_class => $self->get_field_type_for( $field->{'data_type'} ),
render_hints => { field_type => "hidden" }
};
}
return {
name => $name,
field_class => $self->get_field_type_for( $field->{'data_type'} ),
render_hints => $field->{'render_hints'} || {},
};
}
__PACKAGE__->meta->make_immutable; 1;
Form::Sensible::Form::Reflector::DBIC - A reflector class based on Form::Sensible and Form::Sensible::Form::Reflector
version 0.033
my $schema = TestSchema->connect('dbi:SQLite::memory:');
$schema->deploy;
use Form::Sensible;
use Form::Sensible::Reflector::DBIC;
## name must reflect the table which we are reflecting
my $dt = DateTime->now;
my $form = Form::Sensible::Reflector::DBIC->create_form(
{
handle => $schema->resultset("Test"),
form => { name => 'test' }
}
);
my $submit_button = Form::Sensible::Field::Trigger->new( name => 'submit' );
my $renderer = Form::Sensible->get_renderer('HTML');
$form->add_field($submit_button);
$form->set_values( { date => $dt } );
my $output = $renderer->render($form)->complete;
| Form::Sensible::Reflector::DBIC |