Index: /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/t/update/ignore_if_empty.yml =================================================================== --- /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/t/update/ignore_if_empty.yml (revision 0) +++ /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/t/update/ignore_if_empty.yml (revision 0) @@ -0,0 +1,8 @@ +--- + model_config: + resultset: User + elements: + - type: Password + name: name + model_config: + ignore_if_empty: 1 \ No newline at end of file Index: /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/t/update/ignore_if_empty.t =================================================================== --- /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/t/update/ignore_if_empty.t (revision 0) +++ /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/t/update/ignore_if_empty.t (revision 0) @@ -0,0 +1,56 @@ +use strict; +use warnings; +use Test::More tests => 7; + +use HTML::FormFu; +use lib 't/lib'; +use DBICTestLib 'new_db'; +use MySchema; + +new_db(); + +my $form = HTML::FormFu->new; + +$form->load_config_file('t/update/ignore_if_empty.yml'); + +my $schema = MySchema->connect('dbi:SQLite:dbname=t/test.db'); + +my $rs = $schema->resultset('User')->create({ + master => 1, + name => "foo", + title => 'bar' +}); + +is($rs->name, "foo"); + +$form->process({ name => 'test' }); + +$form->model->update($rs); + +$rs->discard_changes; + +is($rs->name, "test"); + +$form->process({ name => undef }); + +$form->model->update($rs); + +$rs->discard_changes; + +is($rs->name, "test"); + +$form->process({ name => 0 }); + +$form->model->update($rs); + +$rs->discard_changes; + +is($rs->name, "0"); + +$form->process({ name => " " }); + +$form->model->update($rs); + +$rs->discard_changes; + +is($rs->name, " "); Index: /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/lib/HTML/FormFu/Model/DBIC.pm =================================================================== --- /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/lib/HTML/FormFu/Model/DBIC.pm (revision 1411) +++ /Users/mo/Documents/workspace/HTML-FormFu-Model-DBIC/lib/HTML/FormFu/Model/DBIC.pm (working copy) @@ -706,6 +706,8 @@ next if not defined $accessor; my $value = $form->param_value( $field->nested_name ); + + next if ($config->{ignore_if_empty} && (!defined $value || $value eq "" )); my ($pk) = $dbic->result_source->primary_columns;