Matt S Trout <[EMAIL PROTECTED]> 08/25/2006 04:23 PM wrote:
> [EMAIL PROTECTED] wrote:
> >
> > I need to be able to handle URLs like these:
> >
> > 2) /report/2006/08/22                        -   likewise for
> > master(2006-08-22) and all of its detail children
> > 3) /report/add/                                    -   inserts a new
> > master record for today's date
> >
> > 5) /report/2006/08/22/add         -   inserts an issue for
> > master(2006/08/22)
> > [ likewise for update of issue data]
> >
> > 7) /report/2006/08/22/edit/3                - displays the screen for
> > master(2006/08/22) with issue(3) loaded into the issued add/edit form.
> >
> > Any hints would be greatly appreciated.
>
> sub base :Chained('/') :PathPart('report') :CaptureArgs(0)
>
> sub master_by_id :Chained('base') :PathPart('') :CaptureArgs(1)
>
> sub master_by_date :Chained('base') :PathPart('') :CaptureArgs(3)
>
> then you'd set up a controller base-class for your actual actions with their
> own 'base' action, and declare one as chained off of master_by_id and the
> other off of master_by_date
>
> That might seem like unnecessary duplication, but it's -really- handy in terms
> of doing uri_for($action, ...) because it allows you to explicitly specify
> which path you're following.


Thanks Matt!


I decided to bag the idea of using the master record id, and only use the
report date to specify the master record.  That simplified it a little.
The I realized, that in my little world, the following are all valid:
/dailystatusrpt/view
/dailystatusrpt/2006/view
/dailystatusrpt/2006/08/view
/dailystatusrpt/2006/08/28/view


I did not quite follow your reasoning for using multiple class files, so I've
proceeded with the "one class to rule them all" design.  I've listed my action
signatures below, in case anybody wants to puzzle out how these chained actions
work together for me.  I say "puzzle" with love. I really like how this is
turning out.  I can  one action that is responsible for getting my master record,
and know that it will run, and not have to repeatedly write calls to get_master()
at every end-point action.

So the list of signatures below, implements the four actions above, and

/dailystatusrpt/2006/08/28/issue/add

in a few moments I'll be implementing /dailystatusrpt/*/*/*/issue/*/edit
and /dailystatusrpt/*/*/*/issue/*/update


sub base :Chained('/') PathPart('') CaptureArgs(0) {
sub drpt : Chained('base') PathPart('dailystatusrpt') CaptureArgs(0) {
sub view_drpt :Chained('drpt') PathPart('view') Args(0) {}
sub drpt_year : Chained('base') PathPart('dailystatusrpt') CaptureArgs(1) {
sub year_view :Chained('drpt_year') PathPart('view') Args(0) {}
sub drpt_month : Chained('base') PathPart('dailystatusrpt') CaptureArgs(2) {
sub view_month :Chained('drpt_month') PathPart('view') Args(0) {}
sub drpt_day : Chained('base') PathPart('dailystatusrpt') CaptureArgs(3) {
sub day_view :Chained('drpt_day') PathPart('view') Args(0) {
sub create_drpt :Chained('drpt_day') PathPart('create') Args(0) {
sub issue : Chained('drpt_day') PathPart CaptureArgs(0) {}
sub create_issue : Chained('issue') PathPart('add')  Args(0) {

Len.




This transmission may contain information that is privileged,
confidential, legally privileged, and/or exempt from disclosure
under applicable law. If you are not the intended recipient, you
are hereby notified that any disclosure, copying, distribution, or
use of the information contained herein (including any reliance
thereon) is STRICTLY PROHIBITED. Although this transmission and
any attachments are believed to be free of any virus or other
defect that might affect any computer system into which it is
received and opened, it is the responsibility of the recipient to
ensure that it is virus free and no responsibility is accepted by
JPMorgan Chase & Co., its subsidiaries and affiliates, as
applicable, for any loss or damage arising in any way from its use.
If you received this transmission in error, please immediately
contact the sender and destroy the material in its entirety,
whether in electronic or hard copy format. Thank you.

_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to