Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re^2: When to use templates?

by zejames (Hermit)
on Nov 19, 2004 at 16:13 UTC ( #409034=note: print w/replies, xml ) Need Help??

in reply to Re: When to use templates?
in thread When to use templates?

I agree with Mutant. However, sometimes HTML::Template is quite limited (especially for complex "IF" statement).

I'd advise to extend HTML::Template by using HTML::Template::Expr, that is fully compatible with the former (through object heritage I guess), but allows you to do more.


Replies are listed 'Best First'.
Re^3: When to use templates?
by cfreak (Chaplain) on Nov 19, 2004 at 16:47 UTC

    *Purest Alert*

    Why do you need complex IF statements in your template? samtregar's idea for HTML::Template was to separate the two. If you introduce complexity into your template you create a Meta-language where code and data are again mixed. And designers get confused :)

    I believe its much better to leave complex stuff in Perl which is very good at handling it and output the appropriate data to the template from there.

    I do make use of HTML::Template's simple IF statements (and I wish there was an elseif) but beyond them I don't think its appropriate to further extend a meta-language.

      I agree mostly with that sentiment. However, I have found myself putting display oriented variables in my perl code lately.

      For example, with HT, I would need to do a ...

      # In the perl $template->param(SHOULD_I_DISPLAY_THIS => ($foo + $bar) > 2); ------- <!-- In the template --> <TMPL_IF SHOULD_I_DISPLAY_THIS>this</TMPL_IF>

      With HTE, I could use...

      <TMPL_IF EXPR="(FOO + BAR) > 2">this</TMPL_IF>

      It leaves the display decisions in the hands of the interface / html coder, and the data collection to the perl program. It is hard (you mentioned not having a TMPL_ELSIF) to do an N (where N>2) way decision, or a decision based on the quantity of something.

      Another example...

      Without creating display variables in your perl code (x_gt_3, x_gt_5, ...), how would you change the style of something based on its value?

      • Green if X < 3
      • orange if 3 <= X < 5
      • red if 5 <= X

      As I said above, I typically don't like using HTE, but I am running into more instances where it could prove to be useful, and would remove some of the variables controling display from my perl code.


      I said complex statement, meaning statement not only based on boolean variable passed par the perl script.

      In HTML::Template for example, you cannot test in the template if $var > 5, you have to do it the script ($bool = $var > 5;) and then use the result the a TMPL_IF.

      I do not like it very much. However, I do respect Your Way To Code It ;) That's a matter of choice.

Re^3: When to use templates?
by Mutant (Priest) on Nov 19, 2004 at 16:58 UTC

    I think if it gets to the point where you really need more complex functionality, then you may want to look at Mason or Template Toolkit (or whatever you choose). The limitations of HTML::Template are by design.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://409034]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (2)
As of 2020-10-24 17:03 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (246 votes). Check out past polls.