Bonjour,
Dans mon application j'ai un problème au niveau de la génération des url.
Merci
url normal
Quand je change de langue j'ai pas de problème au niveau des url
Quand je choisi un langue à partir de l'index, et je vais dans produit par exemple, pas de problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 http://localhost/test/boutique/index.php http://localhost/test/boutique/index.php?language=fr http://localhost/test/boutique/index.php?language=en
Mais cela se corse quand je suis dans un produit et que je change de langue
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://localhost/test/boutique/index.php?Products&Description&products_id=1
La il y a un problème d'écritur d'url mais qui n'a pas d'incidence sur le site, cela concerne uniquement le changement de langue sur la page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part localhost/test/boutique/index.php?Products=&Description=&products_id=1&language=en
Voici les éléments de traitement et de génération
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 public static function link($page, $parameters = null, $add_session_id = true, $search_engine_safe = true) { $page = HTML::sanitize($page); $site = $req_site = static::$site; if ((strpos($page, '/') !== false) && (preg_match('/^([A-Z][A-Za-z0-9-_]*)\/(.*)$/', $page, $matches) === 1) && OSCOM::siteExists($matches[1], false)) { $req_site = $matches[1]; $page = $matches[2]; } if (!is_bool($add_session_id)) { $add_session_id = true; } if (!is_bool($search_engine_safe)) { $search_engine_safe = true; } if (($add_session_id === true) && ($site !== $req_site)) { $add_session_id = false; } $link = static::getConfig('http_server', $req_site) . static::getConfig('http_path', $req_site) . $page; if (!empty($parameters)) { $p = HTML::sanitize($parameters); // pb lien $p = str_replace([ "\\", // apps '{', // product attributes '}' // product attributes ], [ '%5C', '%7B', '%7D' ], $p); $link .= '?' . $p; $separator = '&'; } else { $separator = '?'; } while((substr($link, -1) == '&') || (substr($link, -1) == '?')) { $link = substr($link, 0, -1); } // Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined if (($add_session_id === true) && Registry::exists('Session')) { $OSCOM_Session = Registry::get('Session'); if ($OSCOM_Session->hasStarted() && ($OSCOM_Session->isForceCookies() === false)) { if ((strlen(SID) > 0) || (((HTTP::getRequestType() == 'NONSSL') && (parse_url(static::getConfig('http_server', $req_site), PHP_URL_SCHEME) == 'https')) || ((HTTP::getRequestType() == 'SSL') && (parse_url(static::getConfig('http_server', $req_site), PHP_URL_SCHEME) == 'http')))) { $link .= $separator . HTML::sanitize(session_name() . '=' . session_id()); } } } while(strpos($link, '&&') !== false) { $link = str_replace('&&', '&', $link); } if ($search_engine_safe === true && defined('SEARCH_ENGINE_FRIENDLY_URLS') && (SEARCH_ENGINE_FRIENDLY_URLS == 'true' && SEFU::start()) && static::getSite() != 'ClicShoppingAdmin') { // $link = str_replace(['?', '&', '='], '/', $link); $link = str_replace(['?', '&', '='], ['/', '/', ','], $link); } return $link; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public static function link($url, $element, $parameters = null) { return '<a href="' . $url . '"' . (!empty($parameters) ? ' ' . $parameters : '') . '>' . $element . '</a>'; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public function getFlag() { if (!isset($_GET['Checkout'])) { $content = ''; $get_params = []; foreach ( $_GET as $key => $value ) { if (($key != 'language') && ($key != Registry::get('Session')->getName()) && ($key != 'x') && ($key != 'y')) { $get_params[] = $key . '=' . $value; } } $get_params = implode($get_params, '&'); if ( !empty($get_params) ) { $get_params .= '&'; } foreach ($this->getAll() as $value) { $content .= ' ' . HTML::link(OSCOM::link('index.php', $get_params . 'language=' . $value['code']), $this->getImage($value['code'])) . ' '; } } return $content; }
les éléments à propos $_GET de la fonction getFlag
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 'Products' => string '' (length=0) 'Description' => string '' (length=0) 'products_id' => string '1' (length=1) 'language' => string 'en' (length=2)
Partager