Catalyst::View::Template::Pure::Helpers - Simplify some boilerplate


    package  MyApp::View::Story;

    use Moose;
    use Catalyst::View::Template::Pure::Helpers (':ALL');
    extends 'Catalyst::View::Template::Pure';

    has [qw/title body capture arg q/] => (is=>'ro', required=>1);

      returns_status => [200],
      template => q[
        <!doctype html>
        <html lang="en">
            <title>Title Goes Here</title>
            <a name="hello">hello</a>
      directives => [

        'a[name="hello"]@href' => Uri('Story.last',['={year}'], '={id}', {q=>'={q}',rows=>5}),


Generates code for some common tasks you need to do in your templates, such as build URLs etc.


Used to generate a URL via $c->uri_for. Takes signatures like:

    Uri("$controller.$action", \@captures, @args, \%query)
    Uri(".$action", \@captures, @args, \%query)
    Uri("$relative_action_private_name", \@captures, @args, \%query)
    Uri("$absolute_action_private_name", \@captures, @args, \%query)

We fill placeholders in the arguments in the same was as in templates, for example:

    Uri('Story.last',['={year}'], '={id}', {q=>'={q}',rows=>5})

Would fill year, id and q from the current data context. We also merge in the following keys to the current data context:

    captures => $c->request->captures,
    args => $c->request->args,
    query => $c->request->query_parameters;

To make it easier to fill data from the current request. For example:

    Uri('last', ['={captures}'], '={args}')

You can also use data paths placeholders to indicate the action on which we are building a URI:

    Uri('={delete_link}', ['={captures}'], '={args}')

In this case the placeholder should refer to a Catalyst::Action object, not a string:

    $c->view('List', delete_link => $self->action_for('item/delete'));

This may change in a future version.

Uri("$controller.$action", \@captures, @args, \%query)

URI for an action at a specific Controller. '$controller' should be a controller namespace part, for example 'MyApp::Controller::User' would be 'User' and 'MyApp::Controller::User::Info' would be 'User::Info'.

Uri(".$action", \@captures, @args, \%query)

Relative version of the previous helper. Set the controller to the current controller.

Uri("$absolute_action_private_name", \@captures, @args, \%query)

Creates a URI for an absolute action namespace. Examples:

Uri("$relative_action_private_name", \@captures, @args, \%query)

Creates a URI for a relative (under the current controller namespace) action namespace. Examples:



Takes a view name and optionally arguments that are passed to ->new. Used to apply a view over the results of a previous one, allowing for chained views.

    'ul.todo-list li' => {
      '.<-tasks' => Apply('Summary::Task'),

Useful when you wish to delegate the job of processing a section of the template to a different view, but you don't need a full include.


Used to pass the response on a template to another template, via a 'content' argument. Similar to the 'wrapper' processing instruction.


Template::Pure, Catalyst::View::Template::Pure


    John Napiorkowski L<>


Please see Catalyst::View::Template::Pure> for copyright and license information.