---
name: "Catalyst::View::Mason"
section: "3pm"
platform: "linux"
package: "libcatalyst-view-mason-perl"
version: "0.19-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catalyst::View::Mason"
---

# Catalyst::View::Mason(3pm)

Mason View Class

## NAME

Catalyst::View::Mason - Mason View Class

## SYNOPSIS

```
    # use the helper
    script/create.pl view Mason Mason
    # lib/MyApp/View/Mason.pm
    package MyApp::View::Mason;
    use base 'Catalyst::View::Mason';
    __PACKAGE__->config(use_match => 0);
    1;
    $c->forward('MyApp::View::Mason');
```

## DESCRIPTION

Want to use a Mason component in your views? No problem! Catalyst::View::Mason comes to the rescue.

## EXAMPLE

From the Catalyst controller:

```
    $c->stash->{name} = 'Homer'; # Pass a scalar
    $c->stash->{extra_info} = {
               last_name => 'Simpson',
               children => [qw(Bart Lisa Maggie)]
    }; # A ref works too
```

From the Mason template:

```
    <%args>
    $name
    $extra_info
    </%args>
    <p>Your name is <strong><% $name %> <% $extra_info->{last_name} %></strong>
    <p>Your children are:
    <ul>
    % foreach my $child (@{$extra_info->{children}}) {
    <li><% $child %></li>
    % }
    </ul>
```

## METHODS

### new($app, \\%config)

### get\_component\_path

Returns the component path from `$c`-\>stash-\>{template} or `$c`-\>request-\>match or `$c`-\>action (depending on the use\_match setting).

### process

Renders the component specified in `$c`-\>stash-\>{template} or `$c`-\>request-\>match or `$c`-\>action (depending on the use\_match setting) to `$c`-\>response-\>body.

Note that the component name must be absolute, or is converted to absolute (i.e., a / is added to the beginning if it doesn't start with one).

Mason global variables `$base`, `$c`, and `$name` are automatically set to the base, context, and name of the app, respectively.

### render($c, $component\_path, \\%args)

Renders the given template and returns output, or a HTML::Mason::Exception object upon error.

The template variables are set to %$args if `$args` is a hashref, or `$c`-\>stash otherwise.

*config*

This allows you to to pass additional settings to the HTML::Mason::Interp constructor or to set the options as below:

- "template\_extension"

  This string is appended (if present) to `"$c->action"` when generating a template path.

  Defaults to an empty string.

  Example: `"template_extension => '.html'"`

- "always\_append\_template\_extension"

  Set this to a true value if you want `"template_extension"` to be appended to the component path even if it was explicitly set.

  Defaults to 0.

  Example: `"always_append_template_extension => 1"`

- "use\_match"

  Use `"$c->request->match"` instead of `"$c->action"` to determine which template to use if `"$c->stash->{template}"` isn't set. This option is deprecated and exists for backward compatibility only.

  Currently defaults to 0. Old code should set this to 1 to avoid breakage.

  Example: `"use_match => 0"`

The default HTML::Mason::Interp config options are as follows:

- "comp\_root"

  `"$app->config->root"`

- "data\_dir"

  `"File::Spec->catdir( File::Spec->tmpdir, sprintf('%s_%d_mason_data_dir', $app, $<) )"`

- "allow\_globals"

  `"qw/$c $name $base/"`

  If you add additional allowed globals those will be appended to the list of default globals.

## SEE ALSO

Catalyst, HTML::Mason, "Using Mason from a Standalone Script" in HTML::Mason::Admin

## AUTHORS

- Andres Kievsky "ank@cpan.org"

  - Sebastian Riedel "sri@cpan.org"

  - Marcus Ramberg

  - Florian Ragwitz "rafl@debian.org"

  - Justin Hunter "justin.d.hunter@gmail.com"

  ## COPYRIGHT

Copyright (c) 2005 - 2009 the Catalyst::View::Mason "AUTHORS" as listed above.

This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.
