Hi Kieren,
Thanks for the quick reply.
I hadn't missed out chained("site_base"), as I didn't want those actions
to to be part of any chain. But what I did expect was the Args(1) action
(request 4) to behave in the same way as Args(0) (request 1) which it
doesn't and instead ends up going to the chained action in XPages. It
didn't seem consistent/predictable to me?
Thank you for the book link which will be useful. I do have a fairly
good understanding of the chained process but this specific example
seemed to throw up an anomaly where the request could equally be
satisfied by the chained action or the normal action but the chained
action took precedence except when 0 args were specified. Is Args(0) a
special case? Is there not an order of precedence for resolving requests
specified somewhere?
Thanks,
Nick
On 27/02/13 21:50, Kieren Diment wrote:
On 28/02/2013, at 8:20 AM, Nick Anderson<[email protected]> wrote:
Hi,
please could someone explain how Catalyst determines the precedence of actions,
specifically in relation to the following simple chained example. It doesn't
behave in the way I would expect for requests numbered 4 and 6:
1. http://127.0.0.1:3001/action0 => Matched action 0
2. http://127.0.0.1:3001/action0/abc => Matched XPages / pages
3. http://127.0.0.1:3001/action1 => Matched XPages / pages
4. http://127.0.0.1:3001/action1/abc => Matched XPages / pages
5. http://127.0.0.1:3001/actionx => Matched action x
6. http://127.0.0.1:3001/actionx/abc => Matched XPages / pages
The controllers are detailed below:
package TestApp::Controller::Root;
use Moose;
use namespace::autoclean;
BEGIN { extends 'Catalyst::Controller' }
__PACKAGE__->config(namespace => '');
sub site_base :Chained :PathPart('') :CaptureArgs(0) {
my ($self,$c ) = @_;
}
You seem to have missed :Chained('site_base') from all the sub attributes below.
Check the DwarfChains app in the catalyst book code (chapter 7 available from -
http://www.apress.com/downloadable/download/sample/sample_id/205/ ) for an
example along the same lines of yours that works.
sub action0 :Path('action0') :Args(0) {
my ($self,$c ) = @_;
$c->response->body( "Matched action 0" );
}
sub action1 :Path('action1') :Args(1) {
my ($self,$c ) = @_;
$c->response->body( "Matched action 1" );
}
sub actionx :Path('actionx') :Args() {
my ($self,$c ) = @_;
$c->response->body( "Matched action x" );
}
sub end : ActionClass('RenderView') {}
__PACKAGE__->meta->make_immutable;
1;
package TestApp::Controller::XPages;
use Moose;
use namespace::autoclean;
BEGIN {extends 'Catalyst::Controller'; }
sub base : Chained( '/site_base' ) : PathPart('') : CaptureArgs( 1 ) {
my ( $self, $c ) = @_;
}
sub pages : Chained( 'base' ) : PathPart('') : Args() {
my ( $self, $c ) = @_;
$c->response->body('Matched XPages / pages');
}
__PACKAGE__->meta->make_immutable;
1;
Thanks for any help you can give
Nick Anderson
_______________________________________________
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/
_______________________________________________
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/
_______________________________________________
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/