I\'d like to implement locale switcher, but it seems with no luck...
The code below doesn\'t work because the (Referrer) contains the old value of locale...
Gilden, thanks a lot for idea, but it's doesn't work anyway...
Here is the controller LOCALE SWITCHER:
class LocaleController extends Controller
{
public function changeAction($locale, Request $request)
{
if ($request->hasSession())
{
$session = $request->getSession();
$session->setLocale($locale);
$route_params = $session->get('jet_referrer');
$route_name = $route_params['_route'];
// Some parameters are not required to be used, filter them
// by using an array of ignored elements.
$ignore_params = array('_route' => true, '_controller' => true,
'_template_default_vars' => true);
$route_params = array_diff_key($route_params, $ignore_params);
$url = $this->get('router')->generate($route_name, $route_params);
return $this->redirect($url);
}
}
}
Here is the controller of BUSINESS LOGIC:
/**
* @Route("/{_locale}")
*/
class TestController extends Controller
{
/**
* @Route("/", name="_test")
* @Template()
*/
public function indexAction(Request $request)
{
$request->getSession()->set('jet_referrer', $request->attributes->all());
return array();
}
/**
* @Route("/hello/{name}", name="_test_hello")
* @Template()
*/
public function helloAction($name, Request $request)
{
$request->getSession()->set('jet_referrer', $request->attributes->all());
return array('name' => $name);
}
}
Regarding IGNORED params for array_key_diff()...
_controller
_locale
_route
_template
_template_default_vars
_template_vars
I've tried to include few of them for the new route generation, but with no luck... Don't understand what is going on...
It's seems just a hack... Do we have more sofisticated way to realize this simple feature in Symfony2 ?? RAW PHP allows me to do that much & much more easily...
Thanks again.