| Catalyst-Controller-Resources documentation | Contained in the Catalyst-Controller-Resources distribution. |
Catalyst::Controller::SingletonResource - Catalyst Singleton Resource Controller
package MyApp::Controller::Account;
use base 'Catalyst::Controller::SingletonResource';
# POST /account
sub create {
my ($self, $c) = @_;
}
# GET /account
sub show {
my ($self, $c) = @_;
}
# PUT /account
sub update {
my ($self, $c) = @_;
}
# DELETE /account
sub destroy {
my ($self, $c) = @_;
}
# GET /account/new
sub post {
my ($self, $c) = @_;
}
# GET /account/edit
sub edit {
my ($self, $c) = @_;
}
This controller defines HTTP verb-oriented actions for singleton resource, inspired by map.resource (Ruby on Rails).
In your controller:
package MyApp::Controller::Account; use base 'Catalyst::Controller::SingletonResource';
This base controller exports Catalyst action attributes to your controller, and setup singleton resource as /account.
called by POST /resource request
called by GET /resource request
called by PUT /resource request
called by DELETE /resource request
called by GET /resource/new request
called by GET /resource/edit request
called by GET /resource/delete request
NAKAGAWA Masaki <masaki@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Catalyst-Controller-Resources documentation | Contained in the Catalyst-Controller-Resources distribution. |
package Catalyst::Controller::SingletonResource; use Moose; use namespace::clean -except => ['meta']; BEGIN { extends 'Catalyst::Controller::ActionRole' } our $VERSION = '0.07'; __PACKAGE__->config( action_roles => [ '+Catalyst::Controller::Resources::ActionRole::ResourceAction' ], ); with qw( Catalyst::Controller::Resources::Role::BuildActions Catalyst::Controller::Resources::Role::ParseAttributes ); has '+_default_collection_actions' => ( default => sub { +{ create => { method => 'POST', path => '' }, post => { method => 'GET', path => 'new' }, }, }, ); has '+_default_member_actions' => ( default => sub { +{ show => { method => 'GET', path => '' }, update => { method => 'PUT', path => '' }, destroy => { method => 'DELETE', path => '' }, edit => { method => 'GET', path => 'edit' }, delete => { method => 'GET', path => 'delete' }, }, }, ); sub _COLLECTION :ResourceChained ResourcePathPart CaptureArgs(0) {} sub _MEMBER :ResourceChained ResourcePathPart CaptureArgs(0) {} __PACKAGE__->meta->make_immutable;