[Zope] [Fwd: Re: [Zope] Detecting which form button is pushed?]
Michel Pelletier
michel@digicool.com
Sun, 20 Feb 2000 22:59:33 -0800
-------- Original Message --------
Subject: Re: [Zope] Detecting which form button is pushed?
Date: Sun, 20 Feb 2000 19:11:13 -0800
From: Michel Pelletier <michel@digicool.com>
To: Hung Jung Lu <hungjunglu@hotmail.com>
CC: lstaffor@dynalogic.com, brett@pulse.itd.uts.edu.au
References: <20000220180227.26691.qmail@hotmail.com>
Hung Jung Lu wrote:
>
> >From: "Loren Stafford" <lstaffor@dynalogic.com>
> >I don't know much about it, because I've never used it, but there Zope
> >supports a ":method" type that you can but on form variables or on button
> >names. Then Zope concatenates the name with the "action" value to create an
> >action unique to the button.
> >
> >You'll have to search around for the details. Hope that helps.
>
> That helps a whole world. :) Thanks! It works exactly the
> way you have described.
>
> I keep running into this kind of JavaScript tricks...
> arghhh... those "...:..." tags. Now I know there are
> "mySelection:list", "myMethod:method", "myVar:int", etc.
> These kinds of little tiny patches makes JavaScript
> look like Perl. :)
This isn't javascript, this is all Zope.
What Loren was explaining was a qualifier for ZPublisher's type
marshaling mechanism. For example, in a form you can have:
<input name="bob:int">
And ZPublisher will marshal the value from this input into a python
integer (if it can, if it can't, it raises an error).
'method' is another qualifier that can be used, and it's a bit magical.
Suppose you had a Folder called 'foo' with three DTML Methods in them
called 'A', 'B', and 'C'. In an HTML form you could have the following
code:
<form action="URLtoFolder" method="POST">
<input type="submit" name="A:method" value="This will call A">
<input type="submit" name="B:method" value="This will call B">
<input type="submit" name="C:method" value="This will call C">
</form>
Pressing a different button each time will call a different method.
This is also quite a bit more graceful and flexible than a bunch of
<dtml-if> statements to determine which button was pressed.
-Michel