Catalyst::View::Download::Plain - Catalyst::View::Download::Plain documentation


Catalyst-View-Download documentation Contained in the Catalyst-View-Download distribution.

Index


Code Index:

NAME

Top

Catalyst::View::Download::Plain

VERSION

Top

0.02

SYNOPSIS

Top

  # lib/MyApp/View/Download/Plain.pm
  package MyApp::View::Download::Plain;
  use base qw( Catalyst::View::Download::Plain );
  1;

  # lib/MyApp/Controller/SomeController.pm
  sub example_action_1 : Local {
    my ($self, $c) = @_;

		my $content = "Some Text";

    # To output your data just pass your content into the 'plain' key of the stash
    $c->stash->{'plain'} = {
			data => $content
		};

		# Or into the body of the response for this action
		$c->response->body($content);

    # Finally forward processing to the Plain View
    $c->forward('MyApp::View::Download::Plain');
  }

DESCRIPTION

Top

Takes content and outputs the content as plain text.

SUBROUTINES

Top

process

This method will be called by Catalyst if it is asked to forward to a component without a specified action.

render

Allows others to use this view for much more fine-grained content generation.

CONFIG

Top

stash_key

Determines the key in the stash this view will look for when attempting to retrieve content to process. If this key isn't found it will then look at $c->response->body for content. Content when passed via the stash must be passed in a hashref in the key labeled 'data'

  $c->view('MyApp::View::Download::Plain')->config->{'stash_key'} = 'content';

AUTHOR

Top

Travis Chase, <gaudeon at cpan.org>

SEE ALSO

Top

Catalyst Catalyst::View Catalyst::View::Download

COPYRIGHT & LICENSE

Top


Catalyst-View-Download documentation Contained in the Catalyst-View-Download distribution.
package Catalyst::View::Download::Plain;

use strict;
use warnings;
use base qw( Catalyst::View );

our $VERSION = "0.02";

__PACKAGE__->config( 'stash_key' => 'plain' );

sub process {
    my $self = shift;
    my ($c) = @_;

    my $template = $c->stash->{template};
    my $content = $self->render( $c, $template, $c->stash );

    $c->res->headers->header( "Content-Type" => "text/plain" )
      if ( $c->res->headers->header("Content-Type") eq "" );
    $c->res->body($content);
}

sub render {
    my $self = shift;
    my ( $c, $template, $args ) = @_;

    my $content;

    my $stash_key = $self->config->{'stash_key'};

    $content = $c->stash->{$stash_key}{'data'} || $c->response->body;

    return $content;
}

1;
__END__