[Catalyst] How to make chained actions nice?

Oleg Pronin syber.rus at gmail.com
Sun Apr 8 10:49:27 GMT 2007


Hm... Thanks for your idea! i got it.

2007/4/8, Danny Warren <danny at io.com>:
>
> The Chained('.') parameter is used for chaining across controllers.  I
> understand your URI layout from your comments, but I don't understand
> what you are trying to do with all those weird Chained params you are
> using.
>
> Here is how I would lay it out.  Read the perldoc again, it took me a
> few read-throughs to completely grok the subtleties of how chains work.
>
>
> In MyApp::Controller::Object...
>
> # Responds to /object/list
> sub list : Local { ... }
>
> # Captures object id, as in /object/[OBJ_ID]
> sub object : PathPart('object') Chained CaptureArgs(1) { ... }
>
> # Responds to /object/[OBJ_ID]/edit
> sub edit : Chained('object') Args(0) { ... }
>
> # Chain point for chaining to property controller
> # NOTE: This is just a jump point, don't put bizlogic in here,
> #       put it in the property controller
> sub property : Chained('object') CaptureArgs(0) { ... }
>
>
> In MyApp::Controller::Object::Property
>
> # Responds to /object/[OBJ_ID]/property/list
> sub list : Chained('.') Args(0) { ... }
>
> # Captures property id, as in /object/[OBJ_ID]/property/[PROP_ID]
> sub property : PathPart('') Chained('.') CaptureArgs(1) { ... }
>
> # Responds to /object/[OBJ_ID]/property/[PROP_ID]/edit
> sub edit : Chained('property') Args(0) { ... }
>
>
> Hope that helps!
> Danny Warren
>
> Oleg Pronin wrote:
> > Greetings.
> >
> > I've got some kind of problem using chained actions.
> >
> > There are some objects. Each object has a number of properties.
> >
> > And this is how i want it to be:
> >
> > URL for a list of objects is
> > /object/list
> >
> > URL for editing object is
> > /object/OBJ_ID/edit (through chained action)
> >
> > URL for list of object's properties
> > /object/OBJ_ID/property/list
> >
> > URL for editing property
> > /object/OBJ_ID/property/PROP_ID/edit (through 2 chained actions)
> >
> > I have MyApp::Controller::Object
> >
> > sub list : Local {   ....   }
> >
> > sub object : Chained('/') CaptureArgs(1) {
> >     .... object-related-code ...
> > }
> >
> > Problem one is that i've got to write something like this:
> >
> > sub edit : Chained('object') Args(0) { ....}
> >                            ^^^^^^^
> > i can't say Chained('.') because current path is "/object" and the chain
> > has
> > "/object/object" path.
> > I dont want to place the chain in the Root controller - this is wrong.
> >
> > Problem two is how do i define last 2 urls.
> > In MyApp::Controller::Object::Property
> >
> > sub list : PathPart('property/list') Chained('/object/object') Args(0) {
> > ... }
> >
> > this is very ugly!
> >
> > and finally
> >
> > sub property : Chained('/object/object') CaptureArgs(1) { ... }
> > sub edit : Chained('property') Args(0) { ... }  ( again, i can't say
> > Chained('.') )
> >
> > Do i do something wrong ? Why do i have to copy-paste a half of url to
> > ParhPart and Chained attributes?
> > How do i need to organize the structure of my controllers ?
> >
> > I want to define such an actions in the way like this:
> >
> > Controller::Object
> > sub list : Local {...}                                         #
> > /object/list
> > sub object : Chained('/') CaptureArgs(1) {...}
> > sub edit : Chained('.') Args(0)
> {...}                    #/object/ID/edit
> >
> > Controller::Object::Property
> > sub list : Chained('../') Args(0) {...}
> > #/object/ID/property/list
> > sub property : Chained('../') CaptureArgs(1) {...}
> > sub edit : Chained('.') Args(0) {...}
> > #/object/ID/property/ID/edit
> >
> > Please somebody help!
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > List: Catalyst at lists.rawmode.org
> > Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> > Searchable archive:
> http://www.mail-archive.com/catalyst@lists.rawmode.org/
> > Dev site: http://dev.catalyst.perl.org/
>
> _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive:
> http://www.mail-archive.com/catalyst@lists.rawmode.org/
> Dev site: http://dev.catalyst.perl.org/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20070408/03fbc=
7ae/attachment-0001.htm


More information about the Catalyst mailing list