[Catalyst] Using
Jquery UI Autocomplete widget with Catalyst::View::JSON
Ben van Staveren
benvanstaveren at gmail.com
Mon Apr 26 09:33:31 GMT 2010
Probably not the most pretty one but:
Given you have a resultset obtained with, say,
my $result_set = $c->model('DB::Somedata')->search_rs({...}, {...});
$c->stash->{json} = [
map { id => $_->id, label => $_->name } ($result_set->all)
];
Or a bit more verbose:
foreach my $result ($result_set->all) {
push(@{$c->stash->{json}}, { id => $result->id, label => $result->name });
}
`
Hetényi Csaba wrote:
> Ahh!
>
> That was the trick :)))
> (expose_stash => 'json')
>
> Now it is correctly translate the perl arrayref datastructure to JSON
> array ( [ ... ] )
>
> my @aoh = (
> {
> value => "1",
> label => "betty",
> },
> {
> value => "2",
> label => "jane",
> },
>
> {
> value => "3",
> label => "marge",
> },
> );
> $c->stash->{json} = \@aoh;
> $c->forward('View::JSON');
>
> :)
>
> Thanks Ben!
>
> One last question: if I have a DBIx resultset, how to use it to
> populate autocomplete with the easiest way?
>
> Best wishes from Hungary!
>
>
>
>
> Ben van Staveren írta:
>> You can do that with View::JSON :) Just read the docs though, the
>> reason it didn't work is that you put your data in
>>
>> $c->stash->{json} = [ ... ]
>>
>> And View::JSON will attempt to turn your entire stash into JSON data
>> :) And it does that bit correctly, but the thing you end up with is
>>
>> {
>> json: [ ... ]
>> }
>>
>> And autocomplete doesn't like that. So, either do:
>>
>> $c->stash([ ... ])
>>
>> Or set the expose_stash setting. Whatever is set in there, is the
>> only thing that View::JSON will attempt to serialise.
>>
>> Personally I prefer expose_stash => 'json', so that anything under
>> $c->stash->{json} is serialised, but up to you :)
>>
>
>>
>
>
>
> _______________________________________________
> 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/
>
--
Ben van Staveren
phone: +62 81 70777529
email: benvanstaveren at gmail.com
More information about the Catalyst
mailing list