I solved problem in that way.

Savio

--- Mar 2/3/10, Ronald J Kimball <[email protected]> ha scritto:

> Da: Ronald J Kimball <[email protected]>
> Oggetto: Re: [Templates] problem in passing values in template
> A: [email protected]
> Data: Martedì 2 marzo 2010, 15:37
> On 3/2/2010 5:33 AM, dark0s wrote:
> > I have the following code in search.cgi script:
> >
> >
> > while (my $rset = $sth->fetchrow_arrayref) {
> >    push @p, $rset->[0];
> >    push @t, $rset->[1];
> >    push @l, $rset->[2];
> >    push @m, $rset->[3];
> > }
> > my $tt2 = Template->new({
> >      INCLUDE_PATH => 
> ['/home/savio/templates/src', '/home/savio/templates/lib'],
> > });
> >
> > my $vars = {
> >       p => 
> @array1,
> >       t => 
> @array2,
> >       l => 
> @array3,
> >     m =>  @array4,
> > };
> > $tt2->process('results', $vars) || die
> $tt2->error();
> >
> > and the following template in
> /home/savio/template/lib/results:
> >
> > [% rset = [ p, t, l, m ] %]
> >
> > [% FOREACH value = [1..rset.size] %]
> >    <h5>Project: [% rset.0.p
> %]</h5>
> >    <label>Type: [% rset.1.t
> %]</label><br/>
> >    <label>language: [% rset.2.l
> %]</label><br/>
> >    <label>Members: [% rset.3.m
> %]</label><br/>
> > [% END %]
> >
> > but I doesn't able to pass rset values trought $vars
> in template.
> >
> > What is the problem?
> > How can I to obtain to fill template values?
> 
> The problem, to put it bluntly, is that your code makes no
> sense. 
> Fundamentally, this is not a Template::Toolkit
> problem.  This is a 
> problem of understanding data structures and understanding
> Perl.
> 
> while (my $rset = $sth->fetchrow_arrayref) {
>     push @p, $rset->[0];
>     push @t, $rset->[1];
>     push @l, $rset->[2];
>     push @m, $rset->[3];
> }
> 
> Why are you creating four separate arrays, rather than
> pushing the array 
> references onto a single array?
> 
> 
> my $vars = {
>        p => 
> @array1,
>        t => 
> @array2,
>        l => 
> @array3,
>     m =>  @array4,
> };
> 
> Suppose each of the arrays has 2 elements.  This would
> create a hash 
> that looks like this:
> 
> {
>    'p'        =>
> $array1[0],
>    $array1[1] => 't',
>    $array2[0] => $array2[1],
>    'l'        =>
> $array3[0],
>    $array3[1] => 'm',
>    $array4[0] => $array4[1],
> }
> 
> I presume you actually meant to do this:
> 
> my $vars = {
>        p => 
> \...@array1,
>        t => 
> \...@array2,
>        l => 
> \...@array3,
>     m =>  \...@array4,
> };
> 
> But, the code you're showing us does not defined @array1,
> @array2, 
> @array3, or @array4.  Is that elsewhere in the code,
> or did you mean to 
> use @p, @t, @l, and @m?  Did you 'use strict;' at the
> beginning of your 
> script?
> 
> 
> $tt2->process('results', $vars) || die
> $tt2->error();
> 
> This will make the keys of %$vars (p, t, l, and m)
> available as 
> variables in your template.
> 
> 
> [% rset = [ p, t, l, m ] %]
> 
> You already have access to p, t, l, and m.  What is
> the purpose of 
> putting them in a new array?
> 
> 
> [% FOREACH value = [1..rset.size] %]
>     <h5>Project: [% rset.0.p %]</h5>
>     <label>Type: [% rset.1.t
> %]</label><br/>
>     <label>language: [% rset.2.l
> %]</label><br/>
>     <label>Members: [% rset.3.m
> %]</label><br/>
> [% END %]
> 
> You're iterating over the number of elements in rset -
> which is always 4 
> - when it's clear you actually want to iterate over the
> number of rows 
> returned by the query.
> Further, if p is an array reference, then rset.0 is an
> array reference, 
> so rset.0.p is meaningless.
> 
> What you should be doing is creating a single array, each
> element of 
> which contains the information from a single row returned
> by the query 
> (and each element would be better as a hash reference, not
> an array 
> reference, for easier maintainability).  Then you can
> iterate over the 
> elements, printing out the information from each one.
> 
> 
> To put it simply, you need to be aware of what data
> structures you're 
> using, how you're using them, and how you want to use
> them.
> 
> Ronald
> 
> _______________________________________________
> templates mailing list
> [email protected]
> http://mail.template-toolkit.org/mailman/listinfo/templates
> 


      

_______________________________________________
templates mailing list
[email protected]
http://mail.template-toolkit.org/mailman/listinfo/templates

Reply via email to