[Catalyst] Request paths - rejoining Chained actions together.
Tomas Doran
bobtfish at bobtfish.net
Sun May 11 08:58:10 BST 2008
On 10 May 2008, at 15:12, Matt S Trout wrote:
> On Fri, May 09, 2008 at 01:00:07PM +0100, Tomas Doran wrote:
> sub format :Chained PathPart('format') Args(1) {}
>
> Inherit that into both controllers.
>
> __PACKAGE__->config(actions => { format => { Chained =>
> 'tracksequence' } });
>
> in one controller, and 'trackonvolume' in the other.
>
> Then you have two format endpoints but one 'sub format'.
>
> Problem solved.
>
Aha, much neater / more D.R.Y. thanks. :)
However, this does mean I now have 3 packages (a base class, and two
controllers), where before I had one file..
The actual controller code for all of this stuff is pretty small (as
it's just asking the model stuff, and stashing it at each stage), and
it will be much less visually clear what the hell is going on to have
it spread across three packages..
Is there any semantic problem with the idea of being able to chain a
sub to multiple places? (E.g.sub format : Chained('tracksequence')
Chained('trackonvolume') PathPart('format') Args(1) {}) ?
After hacking a round a little yesterday, I've got the syntax as
suggested above kinda working, and I'll probably keep fiddling with
it unless someone can give me some good reasons why having multiple
Chained attributes should be forbidden (as, lets face it - splitting
my code into 3 packages and inheriting *in this case* is, a hack to
get round Chained not playing how I'd like it to)..
Cheers
Tom
More information about the Catalyst
mailing list