I want to generate a Url directly in my controller. I want to user a url defined in my routing.yml file that needs a parameter.
I've found that code in the Cookbook (Routage section) :
$params = $router->match('/blog/my-blog-post');
// array('slug' => 'my-blog-post', '_controller' => 'AcmeBlogBundle:Blog:show')
$uri = $router->generate('blog_show', array('slug' => 'my-blog-post'));
// /blog/my-blog-post
But I don't understand to what is refering the $router. Obviously, it doesn't work. Is there a simple way to generate a routing url with a paramter in a controller ?
make sure your controller extends
Symfony\Bundle\FrameworkBundle\Controller\Controller;
you should also check
app/console debug:router
in terminal to see what name symfony has named the routein my case it used a minus instead of an underscore
i.e
blog-show
It's pretty simple :
Inside an action, $this->generateUrl is an alias that will use the router to get the wanted route, also you could do this that is the same :
If you want absolute urls, you have the third parameter.
Remember to include UrlGeneratorInterface.
Get the router from the container.
Then use the router to generate the Url