script/myapp_create.pl model MyModel DBIC::Schema MySchema create=static 'dbi:SQLite:/tmp/myapp.db'
-L<DBIx::Class::Schema::Loader> can automaticall load table layouts and
+L<DBIx::Class::Schema::Loader> can automatically load table layouts and
relationships, and convert them into a static schema definition
C<MySchema>, which you can edit later.
Matches any URL beginning with> http://localhost:3000/my/controller/foo. The namespace and
subroutine name together determine the path.
-=item * Namespace-level (C<:Global>)
+=item * Root-level (C<:Global>)
package MyApp::Controller::Foo;
sub foo : Global { }
Matches http://localhost:3000/foo - that is, the action is mapped
directly to the controller namespace, ignoring the function name.
-C<:Global> is equivalent C<:Local> one level higher in
-the namespace.
+C<:Global> always matches from root: it is sugar for C<:Path('/methodname')>.
+C<:Local> is simply sugar for C<:Path('methodname')>, which takes the package
+namespace as described above.
package MyApp::Controller::Root;
__PACKAGE__->config->{namespace}='';
match precisely.
No :Args at all means that B<any number> of arguments are taken. Thus, any
-URL that B<starts with> the controller's path will match.
+URL that B<starts with> the controller's path will match. Obviously, this means
+you cannot chain from an action that does not specify args, as the next action
+in the chain will be swallowed as an arg to the first!
=item * Literal match (C<:Path>)
If you don't want or need these features then it's perfectly acceptable
(and faster) to do something like this:
-sub hello : Global {
- my ( $self, $c ) = @_;
- $c->stash->{message} = 'Hello World!';
- $self->check_message( $c, 'test1' );
-}
-
-sub check_message {
- my ( $self, $c, $first_argument ) = @_;
- # do something...
-}
+ sub hello : Global {
+ my ( $self, $c ) = @_;
+ $c->stash->{message} = 'Hello World!';
+ $self->check_message( $c, 'test1' );
+ }
+
+ sub check_message {
+ my ( $self, $c, $first_argument ) = @_;
+ # do something...
+ }
Note that C<forward> returns to the calling action and continues
processing after the action finishes. If you want all further processing