[Dancer-users] Conditional Matching

David Precious davidp at preshweb.co.uk
Fri Jan 14 12:42:52 CET 2011

On Thu, 2011-01-13 at 21:43 +0000, ambs wrote:
> Hello
> I have a form with two submit buttons. I do not want to have js to 
> detect what submit button was used to redirect the script for two 
> different actions.
> Looking to the documentation I found out conditional matching.
> So, my doubt is: is there any chance on using conditional matching to 
> detect what submit button was used? (basically, is there any way to 
> access to the CGI parameters on the conditional matching portion of routes?)

I'd be inclined to give them different names, e.g.:

<form ... action="/dosomething">
<input type="submit" name="foo" value="Do Foo" />
<input type="submit" name="bar" value="Do Bar" />

and have them submit to a route which calls a different sub depending on
the button clicked, e.g:

post '/dosomething' => sub {
    if (params->{foo}) {
    } else {

Alternatively, it seems a touch hackish, but you could have multiple
routes which pass if the right button wasn't clicked, e.g.:

post '/dosomething' => sub {
    pass unless params->{foo};
    # Do some foo here
post '/dosomething' => sub {
    pass unless params->{bar};
    # Do some bar here


Dave P

David Precious <davidp at preshweb.co.uk> ("bigpresh")

More information about the Dancer-users mailing list