NAME
Form::Sensible::Reflector::DBIC - A reflector class based on Form::Sensible and Form::Sensible::Reflector
VERSION
version 0.349
SYNOPSIS
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 $reflector = Form::Sensible::Reflector::DBIC->new();
my $form = $reflector->reflect_from(
$schema->resultset("Test"),
{
form => { name => 'test' },
with_trigger => 1
}
);
my $renderer = Form::Sensible->get_renderer('HTML');
$form->set_values( { date => $dt } );
my $output = $renderer->render($form)->complete;
CONFIGURATION OF FIELDS
Form::Sensible::Reflector::DBIC was designed with the intention that as much configuration as possible can be done in the definition of the DBIx::Class::ResultSource objects. While the ResultSource definition is used to programatically generate as much of the Form::Sensible::Field definitions as possible, it is possible to add to the Field generated. This is done with several items that can be added to the columinfo hash in the call to add_columns():
- validation
-
The validation hashref is used just as the validation hashref atribute in Form::Sensible::Field. It is typically used by Form::Sensible::Validator in order to create validation rules for form input values. As specified by Form::Sensible::Validator, it can contain keys
required
,code
, andregex
. - render_hints
-
The render_hints hashref also gets passed to Form::Sensible::Field as the render_hints attribute to the
create_from_flattened
constructor. - fs_definition
-
The
fs_definition
hashref can be used to completely override the intelligence ordinarily used to generate the Form::Sensible::Field definition. If this hashref is present, each key in it is used to completely overwrite the key in the Form::Sensible::Field definition. Any of the attributes accepted by Form::Sensible::Field are acceptable here. Note that one could alternatively specifyvalidation
andrender_hints
options here.
For example:
__PACKAGE__->add_columns(
'id',
{
data_type => 'integer',
is_auto_increment => 1,
is_nullable => 0
},
'phone_number',
{
data_type => 'varchar',
validation => { regex => qr/[-\d]+/ }, # passed to Form::Sensible::Field
}
);
__PACKAGE__->set_primary_key('id'); # Defaults to hidden in the form
INTERNAL METHODS
$self->field_type_map
Hashref of the supported DBMS type->form element translations.
$self->field_class_options
Default options for Form::Sensible field classes.
$self->get_base_definition($name, $datatype)
This gets field definitions for a given datatype and returns them in hashref form.
$self->get_fieldnames()
Get field names for the form, for example, the column names in the table.
$self->get_field_definition()
Get a given field's definition.