[Catalyst] No database defaults with FormHandler and DBIC

Martin Řehák rehak at tekkirk.org
Sat Dec 10 14:44:59 GMT 2016


Also form definition looks like this:

has 'formDetail' => (isa => 'reha::Form::LessonDetail', is => 'rw', lazy => 1,
        default => sub {reha::Form::LessonDetail->new });

Is that right in case I would like to have database defaults used after
process()?

Regards
-- 
M.

On 2016.12.10 15:36:10 +0100, Martin Řehák wrote:
> Hi Gerda,
> 
> sorry for late reply. Didn't have time to look into this.
> 
> Now I have:
> 
>         my $init_row = $c->model('DB::Lesson')->new_result({});
>         $validated = $self->formDetail->process(item => $init_row);
> 
> And I still don't see the database defaults in the rendered form. Any clue
> where to look now?
> 
> Thank you
> -- 
> Martin
> 
> On 2016.11.01 12:22:15 -0400, Gerda Shank wrote:
> > A database row is used for defaults only if it is provided in the ‘item’
> > attribute. If you provide only the item_id and item_class they are used to
> > update the row but not for defaults.
> > 
> > Gerda
> > 
> > 
> > On Mon, Oct 31, 2016 at 12:00 PM, Martin Rehak <ligi at tekkirk.org> wrote:
> > 
> > > Hi,
> > >
> > > thanks much for comments.
> > >
> > > I know there are number of ways how/where to set/define defaults from app
> > > code
> > > and there is large text written about it in Catalyst documentation.
> > >
> > > What I would expect to work at least is that database default is going to
> > > be
> > > propagated into the form from the schema definition. I don't need to have
> > > the
> > > second place with explicit default definition when there is and implicit
> > > definition coming from db.
> > >
> > > In other words:
> > > $ script/reha_create.pl model DB DBIC::Schema reha::Schema create=static
> > > 'dbi:Pg:dbname=<dbname>;host=<host>' reha <pass>
> > >
> > > generates
> > >
> > > =head2 capacity
> > >
> > >   data_type: 'integer'
> > >   default_value: 1
> > >   is_nullable: 1
> > >
> > > and there is the default definition successfully fetched from db. How to
> > > get it
> > > used without any override (and duplication) in the app code?
> > >
> > > Thank you very much in advance.
> > >
> > > Regards
> > > --
> > > Martin
> > >
> > > On 2016.10.31 09:23:26 +0000, LNATION . wrote:
> > > > Probs incorrect approach but it'll work....
> > > >
> > > > before render => sub {
> > > >     unless ($_[0]->field('capacity')->value) { # mayb editing
> > > >          $_[0]->field('capacity')->value(1);
> > > >     }
> > > > }
> > > >
> > > > On Mon, Oct 31, 2016 at 8:28 AM, Marc0 <catalyst at hidden-primary.net>
> > > wrote:
> > > >
> > > > > Am 31.10.2016 um 09:15 schrieb Marc0:
> > > > > > Am 31.10.2016 um 08:57 schrieb Martin Rehak:
> > > > > >> has_field 'capacity' => (type => 'PosInteger',
> > > > > >>         #default => '1',
> > > > > >>         label => 'Kapacita');
> > > > > >
> > > > > > maybe add a "lazy => 1" to your commented "default => '1'"?
> > > > > >
> > > > > > has_field q(capacity) => (
> > > > > >     type    => q(PosInteger),
> > > > > >     lazy    => 1,
> > > > > >     default => q(1),
> > > > > >     label   => q(Kapacita),
> > > > > > );
> > > > >
> > > > > maybe "capacity" is explicitely set to undef, you could try an "around"
> > > > > method modifier to check for a defined value:
> > > > >
> > > > > has_field q(capacity) => (
> > > > >     is      => q(ro),           # just guessing
> > > > >     type    => q(PosInteger),
> > > > >     lazy    => 1,
> > > > >     default => q(1),
> > > > >     label   => q(Kapacita),
> > > > >     writer  => q(_set_default_capacity),
> > > > > );
> > > > >
> > > > > # untested, but according to Moose::Manual::MethodModifiers
> > > > > around q(has_field) => sub {
> > > > >     my $orig = shift;
> > > > >     my $self = shift;
> > > > >
> > > > >     # check for definedness and set to default value if
> > > > >     # not defined (NULL)
> > > > >     $self->_set_default_capacity(1)
> > > > >         unless defined $self->$orig();
> > > > >
> > > > >     return $self->$orig();
> > > > > };
> > > > >
> > > > > Regards
> > > > > --
> > > > > Marc0
> > > > >
> > > > > _______________________________________________
> > > > > List: Catalyst at lists.scsys.co.uk
> > > > > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> > > > > Searchable archive: http://www.mail-archive.com/
> > > > > catalyst at lists.scsys.co.uk/
> > > > > Dev site: http://dev.catalyst.perl.org/
> > > > >
> > >
> > > > _______________________________________________
> > > > List: Catalyst at lists.scsys.co.uk
> > > > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> > > > Searchable archive: http://www.mail-archive.com/
> > > catalyst at lists.scsys.co.uk/
> > > > Dev site: http://dev.catalyst.perl.org/
> > >
> > >
> > > _______________________________________________
> > > List: Catalyst at lists.scsys.co.uk
> > > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> > > Searchable archive: http://www.mail-archive.com/
> > > catalyst at lists.scsys.co.uk/
> > > Dev site: http://dev.catalyst.perl.org/
> > >
> 
> > _______________________________________________
> > List: Catalyst at lists.scsys.co.uk
> > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> > Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> > Dev site: http://dev.catalyst.perl.org/
> 



More information about the Catalyst mailing list