[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