I am trying with no luck to find a “referrer” object for use in my
controller. I expected there would be an object similar to the request
object with parameters specifying the _controller, _route and
arguments.
What I am trying to do is a language switcher action that redirects
the user to the same page in the new language. Something along the
lines of:
public function switchLangAction($_locale)
{
$args = array();
$newLang = ($_locale == 'en') ? 'fr' : 'en';
// this is how I would have hoped to get a reference to the referrer request.
$referrer = $this->get('referrer');
$referrerRoute = $referrer->parameters->get('_route');
$args = $referrer->parameters->get('args'); // not sure how to get the route args out of the params either!
$args['_locale'] = $newLang;
$response = new RedirectResponse( $this->generateUrl(
$referrerRoute,
$args
));
return $response;
}
It’s also possible that there is another way to do this – I know in
rails there is the “redirect_to :back” method for example.
Any help would be greatly appreciated.
Why not changing the locale in the user’s session?
First, define your locales in the router
Then, set the session
In all other controllers you should set the session variable yourself by calling
You could also probably make an event listener to set the session variable for every page automatically.