J. Shirley wrote:
On Sun, Aug 9, 2009 at 7:31 AM, Matija Grabnar <[email protected] <mailto:[email protected]>> wrote:

    I think this may be either a bug or something I don't understand
    about specifying chained actions.

    Suppose I have a controller which has a defined default action
    (such as created by catalyst.pl by default, i.e.


    sub default :Path {
      my ( $self, $c ) = @_;
      $c->response->body( 'Page not found' );
      $c->response->status(404);
    }

    To that I add a root action, the start of the chain, like so:

    sub index :Chained('/') PathPart('') :Args(0) {
      my ( $self, $c ) = @_;

      # Hello World
      $c->response->body( $c->welcome_message );
    }

    Now, whenever I request '/' from that script, default action
    triggers, and the index action doesn't.
    If I comment out the default action, the index DOES get called.

    Is this a bug? If not, what do I have to change to have both index
    and default in my root controller?


Hi Matija,

If you change the default attributes to "Private" it will do what you expect. I think this may be a bug, though (thought this was fixed, but I may be remembering wrong).
Ah, not quite. Setting private on "default" does cause index to be called when fetching "/", but now
default doesn't get called for unknown paths.

The index action should match "/" (though, in this circumstance you aren't really chaining to anything, so it would make more sense to use sub index : Path, which would do what you expect)

To demonstrate the bug, I tried to make a minimal script that still showed it. The original script, the one which led me to discover this bug, was considerably bigger, and did indeed need / as part of the chain. But there's no point in posting the whole, multi-controller beast if I can demonstrate the bug with the most basic, two subroutine controller.

_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to