Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
HTML::FormHandler::ManUser:Contributed PHTML::FormHandler::Manual::Database(3)

       HTML::FormHandler::Manual::Database - FormHandler use recipes

       version 0.40068

       Manual Index

       Information on interfacing FormHandler forms and	fields with a
       database.  Also see HTML::FormHandler::TraitFor::Model::DBIC.

Form Models
       For a database form, use	a model	base class that	interfaces with	the
       database, such as HTML::FormHandler::Model::DBIC, which needs to	be
       installed as a separate package.	There's	also a sample 'object' model
       in HTML::FormHandler::Model::Object, which will update a	simple object.

       When using a database model, form field values for the row are
       retrieved from the database using the field 'accessor' attributes
       (defaults to field name)	as database class accessors.

       FormHandler will	use relationships to populate single and multiple
       selection lists,	and validate input. A 'single' relationship is
       processed by HTML::FormHandler::Field::Compound.	A 'has_many'
       relationship is processed by HTML::FormHandler::Field::Repeatable.

       Do not use database row method names, such as 'delete', as field	names
       in a database form.

       You can pass in either the primary key or a row object to the form. If
       a primary key (item_id) is passed in, you must also provide the schema.
       The model will use the item_class (DBIC source name) to fetch the row
       from the	database. If you pass in a row object (item), the schema,
       item_class, and item_id will be set from	the row.

       Executing "$form->process( item => $row,	params => $params );" will
       validate	the parameters and then	update or create the database row

Fields that map	to database relationships
       A select	field will automatically retrieve a select list	from the
       database, if the	proper column names are	provided. Single selects
       handle 'belongs_to' relationships, where	the related table is used to
       construct a selection list from the database.

       See also	HTML::FormHandler::Field::Select and 'lookup_options' in

   Multiple Select
       A multiple select is either a 'Select' with multiple => 1 set, or a
       field of	the 'Multiple' type. The name of a Multiple select which pulls
       options from the	database automatically should be the name of the
       'many_to_many' relationship. The	'value'	of the field is	derived	from
       the 'has_many' part of the relationship.

       The primary key is used for the 'id' of the select. The 'label' column
       of the select is	assumed	to be 'name'. If the label column has a
       different name, it must be specified with 'label_column'.

       Pertinent attributes:


       See also	HTML::FormHandler::Field::Select and

   Compound fields
       A compound field	represents a single relationship to another table.
       Although	most compound relations	can be handled without providing a
       primary key, in some circumstances you may need to provide a PrimaryKey
       field, or add extra values in update_model.

       See also	HTML::FormHandler::Field::Compound.

       The default for compound	fields is that if all subfields	are empty, the
       value of	the compound field is set to undef (null). For some types of
       relations, you may want to set the 'not_nullable' flag to force the
       field to	contain	all subfields anyway, such as when the related rows
       are not deleted when empty. See test t/compound/empty.t for a
       demonstration of	the difference in output.

   Repeatable fields
       The 'Repeatable'	field type allows you to update	arrays of columns from
       related tables easily. You will need to provide a 'PrimaryKey' hidden
       field in	the compound field contained in	the Repeatable.

	 has_field 'addresses' => ( type => 'Repeatable' );
	 has_field 'addresses.address_id' => ( type => 'PrimaryKey' );
	 has_field 'addresses.street';
	 has_field '';
	 has_field 'addresses.state';

       There are some complications with creating Repeatable elements (with
       the PrimaryKey field set	to undef) in a database	and re-presenting the
       form.  See HTML::FormHandler::Field::Repeatable for more	info.

       Do not read the value from the 'item' when populating the form.

       Do not update the database with this field, i.e.	do not include it in

Form generator
       A DBIC form generator is	installed with the
       HTML::FormHandler::Model::DBIC package. See

       There's also a role, HTML::FormHandler::TraitFor::DBICFields, that
       allows simple form fields to be auto-generated from a DBIC result

	   my $form = HTML::FormHandler::Model::DBIC->new_with_traits(
	       traits => ['HTML::FormHandler::TraitFor::DBICFields'],
	       includes	=> ['title', 'author' ],
	       field_list => [ 'submit'	=> { type => 'Submit', value =>	'Save',	order => 99 } ],
	       item => $book );

       FormHandler Contributors	- see HTML::FormHandler

       This software is	copyright (c) 2017 by Gerda Shank.

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

perl v5.32.0			  2017-0HTML::FormHandler::Manual::Database(3)

NAME | VERSION | SYNOPSIS | Form Models | Fields that map to database relationships | Flags | Form generator | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:

home | help