Catalyst::DispatchType::Default - Default DispatchType


Catalyst-Runtime documentation Contained in the Catalyst-Runtime distribution.

Index


Code Index:

NAME

Top

Catalyst::DispatchType::Default - Default DispatchType

SYNOPSIS

Top

See Catalyst::DispatchType.

DESCRIPTION

Top

Dispatch type managing default behaviour. For more information on dispatch types, see:

* Catalyst::Manual::Intro for how they affect application authors
* Catalyst::DispatchType for implementation information.

METHODS

Top

$self->match( $c, $path )

If path is empty (i.e. all path parts have been converted into args), attempts to find a default for the namespace constructed from the args, or the last inherited default otherwise and will match that.

If path is not empty, never matches since Default will only match if all other possibilities have been exhausted.

AUTHORS

Top

Catalyst Contributors, see Catalyst.pm

COPYRIGHT

Top


Catalyst-Runtime documentation Contained in the Catalyst-Runtime distribution.
package Catalyst::DispatchType::Default;

use Moose;
extends 'Catalyst::DispatchType';

no Moose;

sub match {
    my ( $self, $c, $path ) = @_;
    return if $path ne '';    # Not at root yet, wait for it ...
    my $result = ( $c->get_actions( 'default', $c->req->path ) )[-1];

    # Find default on namespace or super
    if ($result && $result->match($c)) {
        $c->action($result);
        $c->namespace( $result->namespace );
        $c->req->action('default');

        # default methods receive the controller name as the first argument
        unshift @{ $c->req->args }, $path if $path;
        $c->req->match('');
        return 1;
    }
    return 0;
}

sub _is_low_precedence { 1 }

__PACKAGE__->meta->make_immutable;

1;