[Catalyst] No database defaults with FormHandler and DBIC

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


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