[Zope] <dtml-if> newbie question
Christian Scholz
cs@comlounge.net
Thu, 9 Nov 2000 18:54:37 +0100
HI!
> I want to select from a select menu, 3 amounts: 1000, 5000 or 10000. After
> this, the form action method should reply:
>
> - "this is not much" if 1000 was selected,
> - "this is ok" if 5000 was selected,
> - "this is very much" if 10000 was selected
>
> Now my form method looks like this:
>
> <form action="form_action">
> How many money?
> <select name="money">
> <option>1000
> <option>5000
> <option>10000
> </select>
> <input type="submit" value="checkit">
> </form>
>
> and the form_action method is this:
>
> <dtml-in money>
> <dtml-if "1000">
> This is not much!
> </dtml-if>
> <dtml-if "5000">
> This is ok!
> </dtml-if>
> <dtml-if "10000">
> This is very much!
> </dtml-if>
> </dtml-in>
>
> I am sure that there is an error in my thinking of these tags.
The <dtml-in> is not right. Use dtml-in if you want to iterate over
lists. So in your case you should try:
<dtml-if "money=='1000'">
This is not much!
</dtml-if>
<dtml-if "money=='5000'">
This is ok!
</dtml-if>
<dtml-if "money=='10000'">
This is very much!
</dtml-if>
(or use <dtml-elif> in this case)
This now makes a string compare as usually form parameters will be passed
as strings if you don't tell Zope to do it different. In order to e.g. let
it pass integers, you might try in the form:
<select name="money:int">
...
Then you can say <dtml-if "money==1000">, etc.
More information about this "type casting" feature can be found at
http://classic.zope.org:8080/Documentation/Reference/ORB
cheers,
Christian
--
COM.lounge http://comlounge.net/
communication & design cs@comlounge.net