diff --git a/lib/HTML/FormHandler/Field/Repeatable.pm b/lib/HTML/FormHandler/Field/Repeatable.pm index 874dc1fc..e460b820 100644 --- a/lib/HTML/FormHandler/Field/Repeatable.pm +++ b/lib/HTML/FormHandler/Field/Repeatable.pm @@ -296,6 +296,8 @@ before 'value' => sub { my @pk_elems = map { $_->accessor } grep { $_->has_flag('is_primary_key') } $self->contains->all_fields if $self->contains->has_flag('is_compound'); + + return [] unless $self->has_value; my $value = $self->result->value; my @new_value; foreach my $element ( @{$value} ) { diff --git a/lib/HTML/FormHandler/Field/Select.pm b/lib/HTML/FormHandler/Field/Select.pm index 577ebb7e..4b8adda9 100644 --- a/lib/HTML/FormHandler/Field/Select.pm +++ b/lib/HTML/FormHandler/Field/Select.pm @@ -461,6 +461,7 @@ sub sort_options { shift; return shift; } before 'value' => sub { my $self = shift; + return undef unless $self->has_result; my $value = $self->result->value; if( $self->multiple ) { diff --git a/t/circular_refs.t b/t/circular_refs.t index 014cad03..0181bd1c 100644 --- a/t/circular_refs.t +++ b/t/circular_refs.t @@ -24,6 +24,12 @@ use Test::Memory::Cycle; type => 'Text', required => 1, ); + has_field 'some_select' => ( type => 'Select', inactive => 1 ); + + sub update_model { + my $self = shift; + my $value = $self->field('some_select')->value; + } } my $form = new_ok( 'My::RepeatableForm' );