Re: [Catalyst] How to avoid repeating methods in controllers ?
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/
Re: [Catalyst] How to avoid repeating methods in controllers ?
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/
Re: [Catalyst] How to avoid repeating methods in controllers ?
Hi, generally if you have some classes that have a common number of attributes and/or methods you'd move those in a base class or in more recent time construct it out of roles which are like lego blocks. For your specific case https://metacpan.org/module/CatalystX::Resource looks to be the solution you are looking for. BR Alex On 2013-07-17 04:05, cc loo 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_Chainshttp://search.cpan.org/%7Eether/Catalyst-Manual-5.9007/lib/Catalyst/Manual/Tutorial/04_BasicCRUD.pod#Refactor_to_Use_a_%27base%27_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.ukmailto: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/ *** T-Systems Austria GesmbH Rennweg 97-99, 1030 Wien Handelsgericht Wien, FN 79340b *** Notice: This e-mail contains information that is confidential and may be privileged. If you are not the intended recipient, please notify the sender and then delete this e-mail immediately. *** ___ 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/
[Catalyst] How to avoid repeating methods in controllers ?
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/