NAME¶
Mojolicious::Plugin::DefaultHelpers - Default helpers plugin
SYNOPSIS¶
# Mojolicious
$self->plugin('DefaultHelpers');
# Mojolicious::Lite
plugin 'DefaultHelpers';
DESCRIPTION¶
Mojolicious::Plugin::DefaultHelpers is a collection of helpers for Mojolicious.
This is a core plugin, that means it is always enabled and its code a good
example for learning to build new plugins, you're welcome to fork it.
See "PLUGINS" in Mojolicious::Plugins for a list of plugins that are
available by default.
HELPERS¶
Mojolicious::Plugin::DefaultHelpers implements the following helpers.
accepts¶
my $formats = $c->accepts;
my $format = $c->accepts('html', 'json', 'txt');
Select best possible representation for resource from "Accept" request
header, "format" stash value or "format"
"GET"/"POST" parameter with "accepts" in
Mojolicious::Renderer, defaults to returning the first extension if no
preference could be detected.
# Check if JSON is acceptable
$c->render(json => {hello => 'world'}) if $c->accepts('json');
# Check if JSON was specifically requested
$c->render(json => {hello => 'world'}) if $c->accepts('', 'json');
# Unsupported representation
$c->render(data => '', status => 204)
unless my $format = $c->accepts('html', 'json');
# Detected representations to select from
my @formats = @{$c->accepts};
app¶
%= app->secrets->[0]
Alias for "app" in Mojolicious::Controller.
%= b('test 123')->b64_encode
Turn string into a Mojo::ByteStream object.
%= c(qw(a b c))->shuffle->join
Turn list into a Mojo::Collection object.
config¶
%= config 'something'
Alias for "config" in Mojo.
content¶
%= content foo => begin
test
% end
%= content bar => 'Hello World!'
%= content 'foo'
%= content 'bar'
%= content
Store partial rendered content in named buffer and retrieve it, defaults to
retrieving the named buffer "content", which is commonly used for
the renderers "layout" and "extends" features. Note that
new content will be ignored if the named buffer is already in use.
content_for¶
% content_for foo => begin
test
% end
%= content_for 'foo'
Append partial rendered content to named buffer and retrieve it. Note that named
buffers are shared with the "content" helper.
% content_for message => begin
Hello
% end
% content_for message => begin
world!
% end
%= content_for 'message'
csrf_token¶
%= csrf_token
Get CSRF token from "session", and generate one if none exists.
current_route¶
% if (current_route 'login') {
Welcome to Mojolicious!
% }
%= current_route
Check or get name of current route.
delay¶
$c->delay(sub {...}, sub {...});
Disable automatic rendering and use "delay" in Mojo::IOLoop to manage
callbacks and control the flow of events, which can help you avoid deep nested
closures and memory leaks that often result from continuation-passing style.
Also keeps a reference to "tx" in Mojolicious::Controller in case
the underlying connection gets closed early, and calls
"reply->exception" if an exception gets thrown in one of the
steps, breaking the chain.
# Longer version
$c->render_later;
my $tx = $c->tx;
my $delay = Mojo::IOLoop->delay(sub {...}, sub {...});
$delay->catch(sub { $c->reply->exception(pop) and undef $tx })->wait;
# Non-blocking request
$c->delay(
sub {
my $delay = shift;
$c->ua->get('http://mojolicio.us' => $delay->begin);
},
sub {
my ($delay, $tx) = @_;
$c->render(json => {title => $tx->res->dom->at('title')->text});
}
);
dumper¶
%= dumper {some => 'data'}
Dump a Perl data structure with "dumper" in Mojo::Util.
extends¶
% extends 'blue';
% extends 'blue', title => 'Blue!';
Set "extends" stash value, all additional pairs get merged into the
"stash".
flash¶
%= flash 'foo'
Alias for "flash" in Mojolicious::Controller.
inactivity_timeout¶
$c->inactivity_timeout(3600);
Use "stream" in Mojo::IOLoop to find the current connection and
increase timeout if possible.
# Longer version
Mojo::IOLoop->stream($c->tx->connection)->timeout(3600);
include¶
%= include 'menubar'
%= include 'menubar', format => 'txt'
Alias for "Mojolicious::Controller/"render_to_string"".
is_fresh¶
my $bool = $c->is_fresh;
my $bool = $c->is_fresh(etag => 'abc');
my $bool = $c->is_fresh(last_modified => $epoch);
Check freshness of request by comparing the "If-None-Match" and
"If-Modified-Since" request headers to the "ETag" and
"Last-Modified" response headers with "is_fresh" in
Mojolicious::Static.
# Add ETag header and check freshness before rendering
$c->is_fresh(etag => 'abc')
? $c->rendered(304)
: $c->render(text => 'I X Mojolicious!');
layout¶
% layout 'green';
% layout 'green', title => 'Green!';
Set "layout" stash value, all additional pairs get merged into the
"stash".
param¶
%= param 'foo'
Alias for "param" in Mojolicious::Controller.
reply->asset¶
$c->reply->asset(Mojo::Asset::File->new);
Reply with a Mojo::Asset::File or Mojo::Asset::Memory object using
"serve_asset" in Mojolicious::Static, and perform content
negotiation with "Range", "If-Modified-Since" and
"If-None-Match" headers.
# Serve asset with custom modification time
my $asset = Mojo::Asset::Memory->new;
$asset->add_chunk('Hello World!')->mtime(784111777);
$c->res->headers->content_type('text/plain');
$c->reply->asset($asset);
reply->exception¶
$c = $c->reply->exception('Oops!');
$c = $c->reply->exception(Mojo::Exception->new('Oops!'));
Render the exception template "exception.$mode.$format.*" or
"exception.$format.*" and set the response status code to 500. Also
sets the stash values "exception" to a Mojo::Exception object and
"snapshot" to a copy of the "stash" for use in the
templates.
reply->not_found¶
$c = $c->reply->not_found;
Render the not found template "not_found.$mode.$format.*" or
"not_found.$format.*" and set the response status code to 404. Also
sets the stash value "snapshot" to a copy of the "stash"
for use in the templates.
reply->static¶
my $bool = $c->reply->static('images/logo.png');
my $bool = $c->reply->static('../lib/MyApp.pm');
Reply with a static file using "serve" in Mojolicious::Static, usually
from the "public" directories or "DATA" sections of your
application. Note that this helper does not protect from traversing to parent
directories.
# Serve file with a custom content type
$c->res->headers->content_type('application/myapp');
$c->reply->static('foo.txt');
session¶
%= session 'foo'
Alias for "session" in Mojolicious::Controller.
stash¶
%= stash 'foo'
% stash foo => 'bar';
Alias for "stash" in Mojolicious::Controller.
%= stash('name') // 'Somebody'
title¶
%= title
% title 'Welcome!';
% title 'Welcome!', foo => 'bar';
Get of set "title" stash value, all additional pairs get merged into
the "stash".
%= ua->get('mojolicio.us')->res->dom->at('title')->text
Alias for "ua" in Mojo.
url_for¶
%= url_for 'named', controller => 'bar', action => 'baz'
Alias for "url_for" in Mojolicious::Controller.
url_with¶
%= url_with 'named', controller => 'bar', action => 'baz'
Does the same as "url_for", but inherits query parameters from the
current request.
%= url_with->query([page => 2])
validation¶
%= validation->param('foo')
Alias for "validation" in Mojolicious::Controller.
METHODS¶
Mojolicious::Plugin::DefaultHelpers inherits all methods from
Mojolicious::Plugin and implements the following new ones.
register¶
$plugin->register(Mojolicious->new);
Register helpers in Mojolicious application.
SEE ALSO¶
Mojolicious, Mojolicious::Guides, <
http://mojolicio.us>.