On Thursday 16 December 2010 23:53:29 Naveed Massjouni wrote:
On Thu, Dec 16, 2010 at 6:43 PM, David Precious <davidp@preshweb.co.uk> wrote:
"Naveed Massjouni" <naveedm9@gmail.com> wrote:
By passing params() into your template vars hash, it is evaluated in list context, so they will get expanded into key/value pairs and they will all get propogated to your template.
I believe they're already passed in under params, so you can use e.g.:
[% params.foo %]
Not 100% certain, though.
Whoa, you are right, in the template you can access params. So now I know of 3 things Dancer provides you in the templates: request, session and params. Are there any others? Lets document this somewhere. Maybe in the Dancer::Template pod?
Yeah, it should certainly be documented more clearly! The cookbook does mention it: "In order to render a view, just call the template keyword at the end of the action by giving the view name and the HASHREF of tokens to interpolate in the view (note that for convenience, the request, session and route params are automatically accessible in the view, named request, session and params) - for example:" It would be nice to briefly mention it in the docs for the template() keyword in Dancer.pm, and perhaps in Dancer::Template too. The actual setting of those default tokens occurs in Dancer::Helpers::template - the code is: # these are the default tokens provided for template processing $tokens ||= {}; $tokens->{dancer_version} = $Dancer::VERSION; $tokens->{settings} = Dancer::Config->settings; $tokens->{request} = Dancer::SharedData->request; $tokens->{params} = Dancer::SharedData->request->params; if (setting('session')) { $tokens->{session} = Dancer::Session->get; } So, you can do things in your template like: Hello there, [% session.username %] and welcome to [% settings.appname %] You asked for [% request.path %] Powered by Dancer [% dancer_version %] On an entirely unrelated note, the fact my signature remained in the quoted message in your reply showed me that my signature separator on my phone is apparently messed up (missing the trailing space) - d'oh! Cheers Dave P