[Zope] Building a list programmatically under DTML
Michel Pelletier
michel@digicool.com
Tue, 7 Sep 1999 17:42:11 -0400
> -----Original Message-----
> From: Timothy Grant [mailto:tjg@avalongroup.net]
> Sent: Tuesday, September 07, 1999 5:19 PM
> To: Kevin Dangoor; Zope Folk
> Subject: Re: [Zope] Building a list programmatically under DTML
>
> > <ul>
> > <dtml-in desc>
> > <li><dtml-var sequence-item></li>
> > </dtml-in>
> > </ul>
>
> Unfortunately, neither the above, nor any other kinds of list making,
> paragraph making or line breaking give me what I expect. The
> about I get
> is always in "list" format
>
> ['item 1', 'this is item 2', 'I am the third item in the list']
>
> So, I *know* its a list, why won't the "in" tag work, do I have to do
> some sort of name space tweaking?
>
> Also, I should pass along that the list is passed to the form
> using the
> following html snippet
>
> <input type="hidden" name="desc:list" value="<dtml-var desc>">
A Ha! This will pass the *string* '['item 1', 'this is item 2', 'I am
the third item in the list']' as *one item in a list*. You cannot pass
along python objects through HTML <input> elements, they are just too
simple. All they can provide is a mapping between a name and a string
value.
To do so, you would need to _build_ your hidden input fields:
<form action...>
<dtml-in desc>
<input type="hidden" name="desc:list" value="<dtml-var
sequence-item>">
</dtml-in>
</form>
This will put an <input...> in your HTML for every element in the list
'original_list'. When the 'action' of this form gets called, ZPublisher
will marshal all of the <input...>s into a list called 'desc'.
And then your code will work.
-Michel