浏览代码

Mise a jour de la méthode de redirection lors d'un changement de langue.

bastien 13 年前
父节点
当前提交
71b498bf1e
共有 1 个文件被更改,包括 11 次插入34 次删除
  1. 11 34
      src/Muzich/CoreBundle/Controller/CoreController.php

+ 11 - 34
src/Muzich/CoreBundle/Controller/CoreController.php 查看文件

30
     }
30
     }
31
     
31
     
32
     $url_referer = $this->container->get('request')->headers->get('referer');
32
     $url_referer = $this->container->get('request')->headers->get('referer');
33
+    $url_referer = str_replace(
34
+      $siteurl = $this->container->getParameter('siteurl'), 
35
+      '', 
36
+      $url_referer
37
+    );
33
     
38
     
34
-    // On effectue un contrôle un peu spécial:
35
-    // Si la page de demande était la page de connexion (hello)
36
-    if (
37
-      $this->generateUrl('index', array('_locale' => $old), true) == $url_referer
38
-      || $this->generateUrl('index', array('_locale' => null), true) == $url_referer
39
-    )
40
-    {
41
-      // On construit l'url
42
-      $url = $this->generateUrl('index', array('_locale' => $language));
43
-    }
44
-    else
45
-    {
46
-      
47
-      // Sinon on doit rediriger l'utilisateur vers son url d'origine
48
-      
49
-      if (preg_match('/user/', $url_referer))
50
-      {
51
-        $search = "/$old/user/";
52
-        $replace = "/$language/user/";
53
-      }
54
-      elseif (preg_match('/group/', $url_referer))
55
-      {
56
-        $search = "/$old/group/";
57
-        $replace = "/$language/group/";
58
-      }
59
-      else
60
-      {
61
-        $search = "/$old";
62
-        $replace = "/$language";
63
-      }
64
-      
65
-      $url = str_replace($search, $replace, $url_referer);
66
-    }
39
+    $params = $this->get('router')->match($url_referer);
40
+    $params['_locale'] = $language;
41
+    $route = $params['_route'];
42
+    unset($params['_route'], $params['_controller']);
43
+    $new_url = $this->generateUrl($route, $params);
67
     
44
     
68
-    return new RedirectResponse($url);
45
+    return new RedirectResponse($new_url);
69
   }
46
   }
70
   
47
   
71
   /**
48
   /**