[Catalyst-dev] RFC: $c->uri_for_chained

Ash Berlin ash at cpan.org
Tue Oct 17 14:01:29 CEST 2006


Ash Berlin wrote:
> Right then,
>
> Finally got annoyed with having to do the likes of (in TT):
>
> c.uri_for(c.controller('Private').action_for('path'), 
> c.req.captures.merge([test.id]), 'some', 'more', 'params')
>
> cos you know - thats EVIL.
>
> I propose a solution something like the following:
>
> $c->uri_for_chained('/private/path', @{$c->req->captures}, $test->id, 
> qw/some more params')
>   
 From Matt's comments in IRC i might not have been clear enough here:

The point of this is to make URIs for chained actions easier.

Take for example:

/script/foo/rename/newname

Actions for that are:
/script/*/rename/* => /script/script (1) => /script/rename (1)

This then finds out that the script "newname" already exists so provides 
a link to delete that script or to replace the contents with the current:

/script/newname/delete => /script/script (1) => /script/delete (0)
/script/newname/copy_from => /script/script (1) => /script/copy_from (1)

Basically my complaint with uri_for as it stands is that it relies upon 
me knowing the dispatch chain and how many args each chained action 
takes. Yes, I "know" this info, but I shouldn't have to look it 
up/remember it when the dispatcher itself quite happily returns undef 
when I get it wrong...

Any clearer?




More information about the Catalyst-dev mailing list