浏览代码

[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);
         }