CGI::Application::Plugin::ActionDispatch man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

CGI::Application::PlugUserAContribuCGI::Application::Plugin::ActionDispatch(3)

NAME
       CGI::Application::Plugin::ActionDispatch - Perl extension

SYNOPSIS
	 # In "WebApp.pm"...
	 package WebApp;

	 use base 'CGI::Application';
	 use CGI::Application::Plugin::ActionDispatch;

	 sub do_stuff : Path('do/stuff') { ... }
	 sub do_more_stuff : Regex('^/do/more/stuff\/?$') { ... }
	 sub do_something_else : Regex('do/something/else/(\w+)/(\d+)$') { ... }

DESCRIPTION
       CGI::Application::Plugin::ActionDispatch adds attribute based support
       for parsing the PATH_INFO of the incoming request. For those who are
       familiar with Catalyst. The interface works very similar.

       This plugin is plug and play and shouldn't interrupt the default
       behavior of CGI::Application.

CAVEATS
       Be aware though, this plugin will not likely work with other modules
       that use attributes.

       This module should work with mod_perl. It however has not be thoroughly
       tested as such. If you have used it with mod_perl please e-mail me with
       your experience.

METHODS
       action_args()
	   If using capturing parentheses in a Regex action. The captured
	   values are accessible using this method.

	     sub addElement : Regex('add/(\d+)/(\d+)') {
	       my $self = shift;
	       my($column, $row) = $self->action_args();
	       ...
	     }

	   The Path action will store everything after the matched path into
	   the action args.

	     # http://example.com/state/pa/philadelphia
	     sub find_state_and_city : Path('state/') {
	       my $self = shift;
	       my($state, $city) = $self->action_args();
		   # $state == pa, $city == philadelphia
	       ...
	     }

ACTIONS
       Regex
	   Regex action is used for regular expression matching against
	   PATH_INFO. If capturing parentheses are used; the matched
	   parameters are accesssible using the action_args() method.

	     Regex('^blah/foo');

	   The Regex action either matches or it doesn't. There are no secrets
	   to it.

	   It is important to note Regex action takes priority. It is assumed
	   if a Path and Regex action both match. The Regex action will take
	   priority, which may not always be the outcome of least suprise, for
	   instance:

	   # http://example.com/music/the_clash sub clash :
	   Path('/music/the_clash') {} # This is an exact match, BUT.  sub
	   the_class : Regex('/music/the_clash') {} # This takes priority.
	   Beware.

       Path
	   The Path action is basically a shortcut for a commonly used Regex
	   action.

	     # http://example.com/products/movies/2
	     sub show_product : Path('products/') {
	       my $self = shift;
	       my($category, $id) = $self->action_args();
	       ....
	     }

	   Is basically the same thing as.

	     sub show_product : Regex('^/products/(\w+)/(\d+)') {
	       my $self = shift;
	       my($category, $id) = $self->action_args();
	       ...
	     }

	   For those that care, the Path('products/') will be converted to the
	   regular expression "^/products\/?(\/.*)$"; then split('/') is run
	   on the captured value and stored in action_args().

       Runmode
	   This action will take the method name and run a match on that.

	   # http://example.com/foobar

	   sub foobar : Runmode {}

       Default
	   The default run mode if no match is found. Essentially the
	   equivalent of the start_mode() method.

	   sub default_mode : Default {}

EXAMPLE
       In CGI::Application module:

	 package WebApp;

	 use base 'CGI::Application';
	 use CGI::Application::Plugin::ActionDispatch;
	 use strict;

	 sub setup {
	   my $self = shift;
	   self->mode_param('test_rm');
	   $self->run_modes(
	     basic_runmode => 'basic_runmode'
	   );
	 }

	 # Regular runmodes should work.
	 sub basic_runmode {
	   my $self = shift
	 }

       The product() runmode will match anything starting with "/products" in
       the PATH_INFO.

	 # http://example.com/myapp.cgi/products/this/is/optional/and/stored/in/action_args/
	 sub product : Path('products/') {
	   my $self = shift;
	   my($category, $product) = $self->action_args();
	 }

       The music() runmode will match anything starting with "/products/music"
       in the PATH_INFO. The product() runmode also matches "/products/music".
       However since this runmode matches closer it takes priority over
       product().

	 # http://example.com/myapp.cgi/products/music/product/
	 sub music : Path('products/music/') {
	   my $self = shift;
	   my $product = $self->action_args();
	   ...
	 }

       This beatles() runmode will match ONLY "/product/music/beatles" or
       "/product/music/beatles/". Regex takes priority over Path so the
       previous runmodes which match this PATH_INFO are not run.

	 # http://example.com/myapp.cgi/products/music/beatles/
	 sub beatles : Regex('^/products/music/beatles\/?')  {
	   my $self = shift;
	   ...
	 }

SEE ALSO
       CGI::Application, CGI::Application::Dispatch

       http://github.com/jaywhy/cgi-application-plugin-actiondispatch

AUTHOR
       Jason Yates, <jaywhy@gmail.com>

COPYRIGHT AND LICENSE
       Copyright (C) 2006-2008 by Jason Yates

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself, either Perl version 5.8.7 or, at
       your option, any later version of Perl 5 you may have available.

perl v5.14.1			  2CGI::Application::Plugin::ActionDispatch(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net