Catalyst::Controller::SingletonResource - Catalyst Singleton Resource Controller


Catalyst-Controller-Resources documentation Contained in the Catalyst-Controller-Resources distribution.

Index


Code Index:

NAME

Top

Catalyst::Controller::SingletonResource - Catalyst Singleton Resource Controller

SYNOPSIS

Top

  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) = @_;
  }

DESCRIPTION

Top

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.

RESERVED ACTIONS

Top

create

called by POST /resource request

show

called by GET /resource request

update

called by PUT /resource request

destroy

called by DELETE /resource request

post

called by GET /resource/new request

edit

called by GET /resource/edit request

delete

called by GET /resource/delete request

AUTHOR

Top

NAKAGAWA Masaki <masaki@cpan.org>

LICENSE

Top

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

SEE ALSO

Top

Catalyst::Controller, Catalyst::Controller::Resources, http://api.rubyonrails.org/classes/ActionController/Resources.html


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;