Question

I am building a URL inside of a class and I'd like to be able to change the routing if necessary later by just changing the routing.yml file.

If I have the route:

userSignup:
  url:   /user/signup
  param: { module: user, action: signup }

How can I use the url_for('userSignup') helper in a class to dynamically create the URL?

Was it helpful?

Solution

You don't need to use the view helpers in your action to generate a url:

$this->generateUrl("userSignup");

The method is defined in sfComponent.class.php. This is the recommended way, not the hacky workaround of loading the view helpers and using them.

OTHER TIPS

I only tried this with 1.2 so I can't speak for any previous versions...

From any of your classes:

sfContext::getInstance()->getConfiguration()->loadHelpers(array('Url'));

...then you can continue with using any of the functions defined in the url helper.

you should use

sfLoader::loadHelpers(array('Url'));

You shouldn't use sfContext::getInstance() to retrieve the configuration.

// instead of using
sfContext::getInstance()->getConfiguration()->loadHelpers('Url');

// use 
sfApplicationConfiguration::getActive()->loadHelpers(array('Url'));
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top