package Reaction::UI::Controller::Role::Action::View; use Moose::Role -traits => 'MethodAttributes'; use Reaction::UI::ViewPort::Object; requires 'setup_viewport'; sub view :Action :Args(0) { my ($self, $c) = @_; $self->setup_viewport($c, { model => $c->stash->{object} }); } around _build_action_viewport_map => sub { my $orig = shift; my $map = shift->$orig( @_ ); $map->{view} = 'Reaction::UI::ViewPort::Object'; return $map; }; 1; __END__; =head1 NAME Reaction::UI::Controller::Role::Action::View - View action =head1 DESCRIPTION Provides a C action, which sets up an L using the object located in the C slot of the C. =head1 SYNOPSYS package MyApp::Controller::Foo; use base 'Reaction::Controller'; use Reaction::Class; with( 'Reaction::UI::Controller::Role::GetCollection', 'Reaction::UI::Controller::Role::Action::Simple', 'Reaction::UI::Controller::Role::Action::Object', 'Reaction::UI::Controller::Role::Action::View' ); __PACKAGE__->config( action => { object => { Chained => 'base' }, view => { Chained => 'object' }, } ); sub base :Chained('/base') :CaptureArgs(0) { ... } =head1 ROLES CONSUMED This role also consumes the following roles: =over4 =item L =back =head1 ACTIONS =head2 view Chain endpoint with no args, sets up the viewport with the appropriate viewport. =head1 METHODS =head2 _build_action_viewport_map Extends to set the C key in the map to L =head1 SEE ALSO =over4 =item L =item L =item L =item L =item L =item L =item L =item L =item L =back =head1 AUTHORS See L for authors. =head1 LICENSE See L for the license. =cut