[dancer-users] Template Toolkit Sort Hash
Dave Cross
dave at dave.org.uk
Sat Sep 26 20:49:06 BST 2015
On 26/09/15 19:25, Kadir Beyazlı wrote:
> Hi Dave,
>
> On Sat, Sep 26, 2015 at 12:11 PM, Dave Cross <dave at dave.org.uk
> <mailto:dave at dave.org.uk>> wrote:
> >
> >
> > On 25/09/15 19:40, Richard Reina wrote:
> >>
> >> I display a hash reference in a template. It works well but is there a
> >> way I can sort it by SNAME instead of ID?
> >>
> >> <ul class="list-group fancy-list-items"> <!-- <ul
> >> class="list-group checked-list-box"> -->
> >> <table style="width:100%">
> >> <% FOREACH ID IN Pats.keys.sort %>
> >> <tr class="list-group-item">
> >> <td width="70"><% Pats.$ID.SNAME %></td>
> >> <td width="75"><% Pats.$ID.ANAME %></td>
> >> <td width="35"><% Pats.$ID.SSN %></td>
> >> <td width="35"><% Pats.$ID.YR %></td>
> >> <td width="250"><% Pats.$ID.CHNAME %></td>
> >> <td width="550"><% Pats.$ID.DESCRIP %></td>
> >> <% END %>
> >> </tr>
> >> </ul>
> >> </table>
> >
> >
> > It looks like you have a hash of hashes. Is that correct?
> >
> > Anyway, you can pass "sort" the name of the key that you want sort on.
> [KB] This is a very common problem asked previously and no solution
> found. It was advised to use array ref instead of hashref at previous
> mails. Now I tried your offer and see that it does not work. Values are
> unordered again.
Damn, yes. There were a couple of typos in my solution. I didn't have
time to test it. Sorry about that.
Of course, I can't be sure until I know what your data structure really
looks like, but this demonstrates a solution for the data structure that
seems to make most sense.
[% Pats = {
id1 => {
ID => 'id1',
SNAME => 'ZZZ',
ANAME => 'aname1',
},
id2 => {
ID => 'id2',
SNAME => 'XXX',
ANAME => 'aname2',
},
id3 => {
ID => 'id3',
SNAME => 'YYY',
ANAME => 'aname3',
}
} -%]
Original:
[% FOREACH id IN Pats.keys.sort -%]
[% id %] / [% Pats.$id.SNAME %] / [% Pats.$id.ANAME %]
[% END -%]
New:
[% FOREACH Pat IN Pats.values.sort('SNAME') -%]
[% Pat.ID %] / [% Pat.SNAME %] / [% Pat.ANAME %]
[% END -%]
Cheers,
Dave...
More information about the dancer-users
mailing list