Symfony2: Backward Uri (Referrer) during switching locale

后端 未结 4 1927
甜味超标
甜味超标 2021-01-01 08:03

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...

4条回答
  •  -上瘾入骨i
    2021-01-01 08:16

    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.

提交回复
热议问题