On Friday 19 August 2011 10:16:51 Michele Beltrame wrote:
Hello!
I'm just beginning with Dancer - looks like a great framework to me - and I have a question. I have the following code:
------------------ package stelage::products; use Dancer ':syntax';
get '/:lang/products/' => sub { return vars->{lang} . ' is the language'; }; ------------------
This works and allows me to use URIs such as:
myapp/it/products/ myapp/en_US/products/
etc...
I'd like, however, some more automation on this by using the "prefix" keywords, but it doesn't seem to work with prefixes. So, this:
------------------ prefix '/:lang/products';
get '/' => sub { return vars->{lang} . ' is the language'; }; ------------------
doesn't match. I also tried with regular expressions in routes, but didn't work either.
You're right, you won't be able to use a prefix that way. One possible way would be to use a before hook to take the language out of the URL, maybe something like the following (untested): hook before => sub { my $path = request->path_info; my ($lang) = $path =~ s{/(.+)/}{/}; vars->{lang} = $lang; request->path_info($path); } Then, your routes can just use e.g. get '/products' => sub {...}, and the language that was removed from the beginning of the URL will be available in vars->{lang} within the route handler. Cheers Dave P -- David Precious ("bigpresh") http://www.preshweb.co.uk/ "Programming is like sex. One mistake and you have to support it for the rest of your life". (Michael Sinz)