http://www.perlmonks.org?node_id=371188


in reply to Re: HTML - sharing design and logic
in thread HTML - separating design and logic

Select lists are simple to populate using HTML::FillInForm. Templates get cluttered up very quickly if you try to fill in forms using template tags. They also become much harder to validate (eg <input type="text" name="foo" value="<TMPL_VAR NAME="foo">" />). Also, if you allow the code to generate the form fields, then you remove the ability of the template designer to change the form fields.

You may argue that HTML::FillInForm needs to have some HTML code in it in order to be able to fill in the HTML form. But it is effectively doing the same thing as a template parser, searching through the HTML for tags that it recognizes (ie HTML form fields), and altering them by assigning a value to the form field. It in no way limits what the template designer can do with the template (ie a select list could be replaced with a series of radio buttons without requiring any code changes, and without needing to alter or adjust any template tags for that matter).

Of course HTML::FillInForm doesn't actually generate the form fields for you, but that is really the job of the Template anyway. In my templates I always try to statically define my form fields unless an option list is dynamically generated by the code. Then a simple loop will do (remember, there will always be some logic in your templates, but it should be display logic only).

Separating code and HTML is easy. You just need to find the right toolset that works for you...

- Cees

Replies are listed 'Best First'.
Re^3: HTML - sharing design and logic
by muba (Priest) on Jul 01, 2004 at 20:24 UTC
    Hmm this one is rather interesting!
    Thank you a lot!
    "2b"||!"2b";$$_="the question"