Reputation: 87
I'm currently facing an issue I have no idea how to solve. For a route, I can have the following annotation :
@Route("/foo/{choice}", name="foo_route", defaults={"choice" = "bar"})
This route can be reached by :
The last case is rather problematic. I would like the choice to be always visible in the url, even if it is the default choice. Is such a thing possible ?
Upvotes: 0
Views: 117
Reputation: 5668
One way to do this would be something like this:
/**
* @Route("/foo/{choice}", name="foo_route")
*/
function fooAction($choice = NULL) {
if ($choice === NULL) {
return $this->redirectToRoute('foo_route', ['choice' => 'bar']);
}
}
That is, remove the defaults, allow $choice === NULL
, and force the redirect to your "default" value.
Alternatively, you could embed JavaScript logic in the page to use history manipulation to modify the url. This would allow you to avoid forcing a redirect. However, forcing the redirect is probably easier, and keeps the logic for handling this entirely in the PHP.
Upvotes: 1