Browse Source

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

bastien 13 years ago
parent
commit
71b498bf1e
1 changed files with 11 additions and 34 deletions
  1. 11 34
      src/Muzich/CoreBundle/Controller/CoreController.php

+ 11 - 34
src/Muzich/CoreBundle/Controller/CoreController.php View File

@@ -30,42 +30,19 @@ class CoreController extends Controller
30 30
     }
31 31
     
32 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
   /**