Преглед изворни кода

[Security] fixed redirection URLs when using {_locale} in the pattern

Fabien Potencier пре 14 година
родитељ
комит
ea7a0eb19c
1 измењених фајлова са 13 додато и 0 уклоњено
  1. 13 0
      src/Symfony/Component/Security/Http/HttpUtils.php

+ 13 - 0
src/Symfony/Component/Security/Http/HttpUtils.php

@@ -48,6 +48,19 @@ class HttpUtils
         if (0 === strpos($path, '/')) {
             $path = $request->getUriForPath($path);
         } elseif (0 !== strpos($path, 'http')) {
+            // hack (don't have a better solution for now)
+            $context = $this->router->getContext();
+            try {
+                $parameters = $this->router->match($request->getPathInfo());
+            } catch (\Exception $e) {
+            }
+
+            if (isset($parameters['_locale'])) {
+                $context->setParameter('_locale', $parameters['_locale']);
+            } elseif ($session = $request->getSession()) {
+                $context->setParameter('_locale', $session->getLocale());
+            }
+
             $path = $this->generateUrl($path, true);
         }