On Sunday 13 November 2011 22:54:17 Puneet Kishor wrote:
1. Does a plugin have to reside under Dancer::Plugin::MyPlugin? Or, can it be situated anywhere, like, for example, under app/lib?
There's no reason the plugin couldn't be e.g. appdir/lib/Dancer/Plugin/MyPlugin.pm, if that's what you're asking. There's no absolute need for plugins to live under the Dancer::Plugin namespace, although it's probably a good idea - and also, the plugin_setting() method exposed by Dancer::Plugin to allow plugins to get their config might not work properly as I think it expects to remove Dancer::Plugin:: from the start of the package name. If you really want your plugin under a different namespace - try it and see :)
2. Is it possible to call a method in the application from within MyPlugin? Here is what I mean --
In my app.pm, I have a method called
sub opts { }
I typically set a bunch of template options in the above sub routine, and use it like so
get '/' => sub { my $opts = opts(); template 'index', $opts; };
I am creating plugin that automatically generates a web page like so
return engine('template')->apply_layout($content);
I would like to run `app::opts()`, and pass the $opts to the template from within the plugin. I am at a loss how to do that.
If you 'use Dancer' as well as 'use Dancer::Plugin' within your plugin, I think you should be able to call template() from within the plugin. 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)