| Reaction documentation | Contained in the Reaction distribution. |
Reaction::UI::Controller::Role::Action::Simple
Provides a setup_viewport method, which makes it easier to setup and
configure a viewport in controller actions.
package MyApp::Controller::Foo;
use base 'Reaction::Controller';
use Reaction::Class;
with 'Reaction::UI::Controller::Role::Action::Simple';
__PACKAGE__->config(
action_viewport_map => { bar => 'Reaction::UI::Viewport::Object' },
action_viewport_args => { location => 'custom-location' },
);
sub bar :Local {
my($self, $c) = @_;
my $obj = $self->get_collection($c)->find( $some_key );
$self->setup_viewport($c, { model => $obj });
}
Read-write lazy building hashref. The keys should match action names in the Controller and the value should be the ViewPort class that this action should use.
Read-write lazy building hashref. Additional ViewPort arguments for the action named as the key in the controller.
Accepts two arguments, context, and a hashref of viewport arguments. It will
automatically determine the action name using the catalyst stack and call
push_viewport with the ViewPort class name contained in the
action_viewport_map with a set of options determined by merging $vp_args
and the arguments contained in action_viewport_args, if any.
See Reaction::Class for authors.
See Reaction::Class for the license.
| Reaction documentation | Contained in the Reaction distribution. |
package Reaction::UI::Controller::Role::Action::Simple; use Moose::Role -traits => 'MethodAttributes'; requires 'push_viewport'; requires 'merge_config_hashes'; has action_viewport_map => (isa => 'HashRef', is => 'rw', lazy_build => 1); has action_viewport_args => (isa => 'HashRef', is => 'rw', lazy_build => 1); sub _build_action_viewport_map { {} } sub _build_action_viewport_args { {} } sub setup_viewport { my ($self, $c, $vp_args) = @_; my $action_name = $c->stack->[-1]->name; my $vp = $self->action_viewport_map->{$action_name}; my $args = $self->merge_config_hashes( $vp_args || {}, $self->action_viewport_args->{$action_name} || {} , ); return $self->push_viewport($vp, %$args); } 1; __END__;