[Catalyst] Catalyst and ExtJS
Scott Pham (scpham)
scpham at cisco.com
Mon Mar 16 19:06:27 GMT 2009
> -----Original Message-----
> From: Adam Witney [mailto:awitney at sgul.ac.uk]
> Sent: Monday, March 16, 2009 3:00 PM
> To: The elegant MVC web framework
> Subject: Re: [Catalyst] Catalyst and ExtJS
>
> >
> > No, don't do that!
> >
> > Use $row->get_columns which returns a hash of the column data!
> > Accessing internal methods is bad, accessing internal hash keys is
> > doubleplusungood. If you find yourself doing that, go read some
> > documentation. If you haven't figured it out without doing that,
> > submit a patch for a proper method!
> >
> > Here's the pod:
> > http://search.cpan.org/~ribasushi/DBIx-Class-
> 0.08012/lib/DBIx/Class/Row.pm#get_columns
> >
> > Also, you can use the HashRefInflator which works -fantastic- for
> > JSON views:
> >
> > The code is very simple:
> >
> > my $rs = $c->model('DB::Books');
> > $rs->resultclass('DBIx::Class::HashRefInflator');
> > $c->stash->{books} = [ $rs->all ];
> >
> > You can read about that here:
> > http://search.cpan.org/~ash/DBIx-Class-
> 0.08010/lib/DBIx/Class/ResultClass/HashRefInflator.pm
>
> excellent, thanks guys, with minor modifications both those approaches
> work:
>
> $c->stash->{books} = [map { $_->get_columns } $c-
> >model('DB::Books')->all];
>
> OR:
>
> my $rs = $c->model('DB::Books');
> $rs->result_class('DBIx::Class::ResultClass::HashRefInflator');
> $c->stash->{books} = [ $rs->all ];
>
> thanks again for your help
>
> adam
You only want to present the data you need to ExtJS, you were stuffing
the whole dbic resultset object into the JSON ;).
More information about the Catalyst
mailing list