On 16 Dec 2009, at 17:27, Bill Moseley wrote:
It also means I can't easly overide. If I have hello() in both thes controllers:

Foo::Controller::Whatever::hello()
Bar::Controller::Whatever::hello()

I then get:

[debug] Loaded Path actions:
.------------------------------------- +--------------------------------------. | Path | Private | +------------------------------------- +--------------------------------------+ | / | / index | | / | / index | | / | / default | | / | / default | | /whatever/hello | /whatever/ hello | | /whatever/hello | /whatever/ hello | | /whatever/howdy | /whatever/ howdy | '------------------------------------- +--------------------------------------'

So, I guess what I really would like is a way to have it load the Foo::* modules but register their actions in the associated Bar:: namespace so that /whatever/hello calls Bar::Whatever::hello but Foo::Whatever is the parent class if hello() doesn't exist in Bar.

Hmmm.

Sooo, what happens is that Catalyst::Component calls the COMPONENT method on each component, passing it a 'catalyst_component_name' parameter as config.

So in your case, Foo::Controller::Whatever->COMPONENT($app, { catalyst_component_name => 'Foo::Controller::Whatever' } );

should be called.

What should happen is that the component is then registered in the component registry with the name found by calling the - >catalyst_component_name accessor on the generated instance.. This unfortunately isn't how it works.. :(

As if that worked, then you could return 'Bar::Controller::Whatever', and the component system should register the first thing with each name...

Ergo, you'd load all the 'real' Bar::Controller::* modules in your app, and then load all the Foo::Controller::(.*) modules from the alternate namespace, registering them as Bar::Controller::$1 (but not doing so if Bar::Controller::$1 already exists).

Tests for this working would be the most arduous part of this development. If anyone would like to contribute them, then I'd be happy to work on the core changes to make what you want to do trivially possible.

Cheers
t0m


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

Reply via email to