NAME

Catalyst::ComponentRole::PathFrom - Derive a path using common Catalyst patterns

SYNOPSIS

package MyApp::Model::Path;

use Moose;

extends 'Catalyst::Component';
with 'Catalyst::ComponentRole::PathFrom',
  'Catalyst::Component::InstancePerContext';

has ctx => (is=>'rw', weak_ref=>1);

sub build_per_context_instance {
  my ($self, $c) = @_;
  $self->ctx($c);
  return $self;
}

around 'path_from', sub {
  my ($orig, $self, @args) = @_;
  return $self->$orig($self->ctx, @args);
};

__PACKAGE__->meta->make_immutable;

package MyApp::Controller::Example;
use base 'Catalyst::Controller';

sub test_a :Local {
  my ($self, $c) = @_;
}

sub test_b :Local PathFrom('ffffff') {
  my ($self, $c) = @_;
}

sub test_c :Local  {
  my ($self, $c) = @_;
  $c->stash(path_from=>'foo/bar');
}

DESCRIPTION

Common Catalyst views set a template path using a standard process, typically one based on the action or from a stash key. This component role trys to encapsulate that common pattern, with the hope that it makes it easier for people to make new Views in a consistent way. For example if you make your own custom Views this could save you some time in getting a common and expected setup.

ATTRIBUTES

This role exposes the following attributes for configuration

extension

Optional. This is a file extension added to the end of your generated file path. For example 'html', 'tt2'. You don't need to include the '.' separator.

stash_key

Has default, 'path_from'. Used to set the stash key you wish to use to programmatically set the file path pattern in your action body.

action_attribute

Has default, 'PathFrom'. Used to set the action attribute we use to get a file path pattern.

path_base

Has default "$app->config->{root}". Used to set the base path for relative paths. Usually you leave this one alone :)

METHODS

This role exposes the following public methods

path_from ( $action | $c | $c, $action | $c, $string_path )

Builds a full path to a file on the filesystem using common Catalyst conventions.

Given an $action, will return $base_path + $action->reverse + $extension OR if the $action has an attribute value for $action_attribute, return $base_path + $action_attribute + $extension.

Given $c, will do all the above (using $c->action for $action), but also check if the stash contains $stash_key and if so use that path instead.

Given $c, $action, does as above but uses the given $action instead of $c->action

Given $c, $string_path, uses $string_path instead of $action->reverse.

When using a $string_path, a $stash_key value or a value in $action_attribute you may use the following placeholders in the string (for example ':namespace/foo')

:namespace

The action namespace ($action->namespace), which is typically the controller namespace

:reverse

"$action->reverse" (which is basically the default

:actionname

"action->name" (the subroutine method name, typically).

NOTE: if you use a $string_path, a $stash_key value or a value in $action_attribute and that value starts with '/', that is a signal you wish to use an absolute path, and we don't prepend $self->base_path. You probably won't need this...

SEE ALSO

Catalyst, Catalyst::Component, File::Spec, Moose::Role.

AUTHOR

John Napiorkowski email:jjnapiork@cpan.org

COPYRIGHT & LICENSE

Copyright 2015, John Napiorkowski email:jjnapiork@cpan.org

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

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 238:

Unknown directive: =over4

Around line 240:

'=item' outside of any '=over'