you might want something like this, where one class defines common attributes, and other classes extend it, for example
package CommonAttributes; use Moose; has name => ( is => 'rw', ); sub jump { my ( $self, $c ) = @_; warn "JUMP"; } 1; package ControllerOne; use Moose; extends qw/CommonAttributes/; sub method_controller_one { my ( $self ) = @_; warn "method from controller 1"; } 1; package ControllerTwo; use Moose; extends qw/CommonAttributes/; sub method_controller_two { my ( $self ) = @_; warn "method from controller 2"; } 1; package MyApp; my $one = ControllerOne->new( name => 'Name: One' ); $one->method_controller_one(); warn $one->name; $one->jump; my $two = ControllerTwo->new( name => 'Name Two:' ); warn $two->name; $two->method_controller_two(); $one->jump; On 7/21/13, Robert Rothenberg <rob...@gmail.com> wrote: > I prefer to put as much code as I can (especially "business logic" code) > into Moose role methods. This makes it easier to share code among multiple > controller methods, and it makes the code a little easier to read as well > as test (since the role methods don't require the Catalyst server to be > running per se: the context can be simulated using > CatalystX::Test::MockContext). > > If the code really does require a controller, I create a base controller > class that uses configuration parameters from $self->{config}, and then > have the actual controllers use something like > > __PACKAGE__->config( > table => 'foo', > .. > ); > > > > > > > On Wed, Jul 17, 2013 at 3:05 AM, cc loo <mobile.cc...@gmail.com> wrote: > >> Hi all, i'm a network engineer by trade and is picking up perl/catalyst >> to >> upgrade my skills :) >> >> I have a couple of controllers each having same methods, chaining off >> their respective 'base' methods. >> >> I build my controllers off this guide here: >> http://search.cpan.org/~ether/Catalyst-Manual-5.9007/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod#Refactor_to_Use_a_'base'_Method_to_Start_the_Chains >> >> >> So, i have >> >> controller_a with a method 'list' , chaining off 'base' >> controller_b with a method 'list', chaining off' 'base' >> >> Is there a more graceful manner of inheriting this method instead of >> copy/paste on every controller i have ? >> >> >> _______________________________________________ >> 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/ >> >> > _______________________________________________ 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/