On the other point: I am not sure what you mean by your suggestion - I you suggesting that every controller action pass down a 'switched url' of itself to be rendered by the view? That seems like a lot to maintain. I am new to Symfony 2; maybe there is an elegant way to achieve this?
On May 10, 11:56 am, theinterned <ned...@gmail.com> wrote: > I solved this. > > I found the $router->match() method, which I am using against a > cleaned up version of the $request->server->get('HTTP_REFERER'). This > gives me the route parameters I need to generate my redirect route. > > Here is the completed action: > > public function switchLangAction($_locale) > { > $newLang = ($_locale == "en") ? "fr" : "en"; > > $request = $this->get('request'); > $router = $this->get('router'); > $domain = $request->server->get('HTTP_HOST'); > $referrer = $request->server->get('HTTP_REFERER'); > > // remove the protocol > $referrer = preg_replace(';\b((ftp|https?)://)+?\b;', '', > $referrer); > // remove the domain > $referrer = str_replace($domain, '', $referrer ); > // remove the controller > $referrer = str_replace($request->getBaseUrl(), '', > $referrer); > // remove the query string > $referrer = preg_replace('/\?.*/', '', $referrer); > // match the resulting cleaned up route > $referrerParams = $router->match( $referrer ); > // pluck the _route out of the params > $referrerRoute = $referrerParams['_route']; > unset($referrerParams['_route']); > // switch the locale > $referrerParams['_locale'] = $newLang; > > $response = new RedirectResponse( $this->generateUrl( > $referrerRoute, > $referrerParams > )); > return $response; > } > > On May 9, 1:01 pm, Matt <matthieu.o.vac...@gmail.com> wrote: > > > > > > > > > Hi, > > > This is how I did it: > > > public function changeLocaleAction($locale) > > { > > if ($this->request->hasSession()) > > $this->session->setLocale($locale); > > > $referer = $this->request->server->get('HTTP_REFERER'); > > if (!isset($referer)) > > $referer = $this->generateUrl('index'); > > > return new RedirectResponse($referer); > > > } > > > I'm not sure if it is the best to do it way but it works for me in my use > > cases. > > > Regards, > > Matt -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en