NAME
Jedi::Plugin::Template - Plugin for Template Toolkit
VERSION
version 1.001
DESCRIPTION
This is a Template::Toolkit plugin for Jedi web app framework.
Jedi is just a simple web app framework that help your create app above Plack.
This plugin handle your Template::Toolkit files for you.
It will use the Jedi config to get the directory of your templates. The default value is the dist_dir of your module.
SYNOPSIS
The directory of your templates should look like :
* public
* views
* layouts
The public directory contain all your static files. It is generally your javascripts and css.
The views directory contain all your template toolkit files.
The views/layouts contain all your template toolkit layout files.
To use it in your Jedi app :
package MyApps;
use Jedi::App;
use Jedi::Plugin::Template;
sub jedi_app {
# ...
$jedi->get('/bla', sub {
my ($jedi, $request, $response) = @_;
$response->body(
$jedi->jedi_template('test.tt', {hello => 'world'}, 'main.tt');
);
return 1;
})
}
1;
The views directory here, look like :
* views
* test.tt
* layouts
* main.tt
The main.tt look like
<html>
<body>
This will wrap your content :
[% content %]
</body>
</html>
And your test.tt :
<p>Hello [% hello %]</p>
CONFIGURATION: template_dir
By default Jedi::Plugin::Template will setup the 'template_dir' configuration to the dist_dir of your package :
MyApps:
template_dir: DIST_DIR('MyApps')
You can create a config file to be able to do development in your working directory like this :
MyApps:
template_dir: ./share/
In order to be able to deploy and use properly your app like any other perl packages, use the 'share' directory.
With Dist::Zilla it will be automatic if the "public" and "views" directory is placed under the "share" directory.
If you use Module::Build you need to defined :
my %module_build_args = (
# ...
"share_dir" => {
"dist" => "share"
},
# ...
);
SET A DEFAULT LAYOUT: jedi_template_default_layout
You can defined a default layout, by setting the attribute : 'jedi_template_default_layout'
$jedi_app->jedi_template_default_layout('main.tt');
GET YOUR TEMPLATE: jedi_template
The method 'jedi_template' will use Template to process your template.
$jedi_app->jedi_template($file, \%vars);
$jedi_app->jedi_template($file, \%vars, $layout);
The layout use the jedi_template_default_layout by default.
You can also remove any layout, using the value "none".
$jedi_app->jedi_template($file, \%vars, 'none'),
THE PUBLIC DIRECTORY
The plugin will match all missing by sending a public file if this one exists. It handle cache and compression for you.
* public
* mystyle.css
curl http://localhost:3000/mystyle.css
If no route match the '/mystyle.css', then the plugin will check in the public dir and send the file if this one is present.
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/celogeek/perl-jedi-plugin-template/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
celogeek <me@celogeek.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by celogeek <me@celogeek.com>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.