[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" />
</form>


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}) {
        do_foo();
    } else {
        do_bar();
    }
};

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
};


Cheers

Dave P

-- 
David Precious <davidp at preshweb.co.uk> ("bigpresh")
http://www.preshweb.co.uk/




More information about the Dancer-users mailing list