Provided by: libmojolicious-perl_6.15+dfsg-1ubuntu1_all bug

NAME

       Mojolicious::Plugin::DefaultHelpers - Default helpers plugin

SYNOPSIS

         # Mojolicious
         $app->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
         %= b('test 123')->b64_encode

       Turn string into a Mojo::ByteStream object.

   c
         %= 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 a named buffer and retrieve it later, defaults to
       retrieving the named buffer "content", which is commonly used for the renderers "layout"
       and "extends" features. New content will be ignored if the named buffer is already in use.

   content_for
         % content_for foo => begin
           test
         % end
         %= content_for 'foo'

       Same as "content", but appends content to named buffers if they are already in use.

         % content_for message => begin
           Hello
         % end
         % content_for message => begin
           world!
         % end
         %= content 'message'

   content_with
         % content_with foo => begin
           test
         % end
         %= content_with 'foo'

       Same as "content", but replaces content of named buffers if they are already in use.

         % content message => begin
           world!
         % end
         % content_with message => begin
           Hello <%= content 'message' %>
         % end
         %= content '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 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, very useful for debugging.

   extends
         % extends 'blue';
         % extends 'blue', title => 'Blue!';

       Set "extends" stash value, all additional key/value 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 "render_to_string" in Mojolicious::Controller.

   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/Last-Modified headers and check freshness before rendering
         $c->is_fresh(etag => 'abc', last_modified => 1424985708)
           ? $c->rendered(304)
           : $c->render(text => 'I ♥ Mojolicious!');

   layout
         % layout 'green';
         % layout 'green', title => 'Green!';

       Set "layout" stash value, all additional key/value 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);

         # Serve static file if it exists
         if (my $asset = $c->app->static->file('images/logo.png')) {
           $c->res->headers->content_type('image/png');
           $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 "static" in Mojolicious, 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 or set "title" stash value, all additional key/value pairs get merged into the
       "stash".

   ua
         %= 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>.