[Catalyst] Generate a URL for a given action
John Napiorkowski
jjn1056 at yahoo.com
Thu Aug 31 04:07:43 CEST 2006
Hi,
I'm sure this is a no brainer but I just can't find it anywhere. Basically what I am trying to find out is if there is a programmatic way to discover the url for a given action in controller just by using the action name. Here is the example I am trying to deal with:
package myapp::templates
##n ormal controller setup stuff
sub templates :Chained('/') CaptureArgs(0)
{
## Get the templates list from the model
}
sub list :Chained('templates') PathPart('') Args(0)
{
## Show a list of all templates found by the template action
}
sub template :Chained('templates') PathPart('') CaptureArgs(1)
{
## Retrieve info about a particular template
}
sub view :Chained('template') PathPart('') Args(0)
{
## View the template found by the template action
}
sub edit :Chained('template') PathPart('edit') Args(0)
{
my ($self, $c) = @_;
if( $c->request->method eq 'GET' )
{
##Just show the Form
}
elsif($c->request->method eq 'POST')
{
## Do some form processing and if everything saves okay...
$c->response->redirect("/templates");
}
}
Basically I'd like to replace the hardcoded path in the redirect("/templates") since I am not too sure where this app will eventually sit in the web hierarchy. Now, the docs for $c->get_uri says you can pass an action to it to get the url, which seems to me what I want. If I did:
$c->response->redirect($c->uri_for('templates'));
Would this work correctly even if this controller ends up deeply nested?
--john
More information about the Catalyst
mailing list