PerlDancer / Dancer2

Perl Dancer Next Generation (rewrite of Perl Dancer)
http://perldancer.org/
Other
543 stars 274 forks source link

Document how write a Dancer2 CGI app #1679

Open toddr opened 1 year ago

toddr commented 1 year ago

I worked with @xsawyerx today and we figured out how to write a Dancer2 app in CGI. We feel like it should be documented but we're not sure where:

use Dancer2;
use Plack::Loader;
use Template::Provider::FromDATA;

# Tell Dancer to use the DATA section for templates                                                                                                                                                                                                                                                                                                                                                     
my $provider = Template::Provider::FromDATA->new( { CLASSES => __PACKAGE__ } );
set engines => {template => { template_toolkit => { LOAD_TEMPLATES => [ $provider ] }}};
set template => 'template_toolkit';

get '/' => sub {
    template 'mytemplate' => { bar => "foo" };
};
Plack::Loader->auto->run(main->to_app);

__DATA__                                                                                                                                                                                                                                                                                                                                                                                                

__mytemplate.tt__                                                                                                                                                                                                                                                                                                                                                                                       
Flib [% bar %]                                                                                                                                                                                                                                                                                                                                                                                          

__anothertemplate.tt__                                                                                                                                                                                                                                                                                                                                                                                  
Something else here.
toddr commented 1 year ago

Technically the only code needed for a CGI script would be:

use Dancer2;
use Plack::Loader;

get '/' => sub { "Hello World!" };
Plack::Loader->auto->run(main->to_app);

The rest is how to embed templates in the DATA block.

cromedome commented 1 year ago

I would think either a new example app or the cookbook would make for good places to put this. I am open to suggestions!

xsawyerx commented 9 months ago

I think it would work well in a Cookbook. @toddr interested in picking this up?