In Symfony, how can I use the url_for helper in a class?
-
13-09-2019 - |
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?
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'));