[dancer-users] Template Toolkit Sort Hash
Kadir Beyazlı
kadirbeyazli at gmail.com
Sun Sep 27 12:48:48 BST 2015
On Sat, Sep 26, 2015 at 10:49 PM, Dave Cross <dave at dave.org.uk> wrote:
>
> 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,
[KB] The data Richard mentioned is a classic fetchall_hashref data as below:
$Pats = {ID => { SNAME => Value,
CHNAME => Value,
ANAME => Value,
},
ID => { SNAME => Value,
CHNAME => Value,
ANAME => Value,
},
ID => { SNAME => Value,
CHNAME => Value,
ANAME => Value,
}
}
ID is key of other attributtes. He asks if it id possible to sort by
SNAME at above structure.
I am using arrayref but this is common questin asked by beginners and
no solution found
>
> 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...
>
>
> _______________________________________________
> dancer-users mailing list
> dancer-users at dancer.pm
> http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
--
Kadir Beyazlı
Computer Engineer
GSM : +90 535 821 50 00
More information about the dancer-users
mailing list