Bonjour
J'essaie d'utiliser un code PHP + Javascript pour changer la locale de mon site web.
Je veux qu'un clic sur un lien 'FR' 'EN' 'ES' change la locale, tout en conservant la page courante.
J'ai pensé à faire un formulaire avec un input hidden, et de soumettre ce formulaire en javascript; mais au final les données ne sont jamais reçues par php.
J'ai çà dans mon code
index.php
header.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part <?php include 'include/header.php';?>
Dans Constants.php j'ai çà:
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 <?php session_start(); include_once 'include/Constants.php'; include_once 'include/locale.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <script type="text/javascript"> function setLocale(newLocale){ document.formLocale.language.value = newLocale; document.formLocale.submit(); }; </script> </head> <body> <div class="header"> <!-- language --> <div class="lang"> <form action="#" name="formLocale" method="post"> <input type="hidden" id="language"></input> </form> <!-- <a href="" onclick="javascript:setLocale('fr')">FR</a> <a href="" onclick="javascript:setLocale('en')">EN</a> <a href="" onclick="javascript:setLocale('es')">ES</a> --> <?php foreach ($AVAILABLE_LANGUAGES as $languageKey => $languageValue) { ?> <a href="" onclick="javascript:setLocale('<?=$languageKey?>')"><?=$languageValue?> POST</a> <?php }?> </div>
et dans locale.php j'ai çà:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?php $AVAILABLE_LANGUAGES = array( 'fr' => 'FR', 'en' => 'EN', 'es' => 'ES' ); ?>
Comme vous le voyez, dans header.php, il y a un form avec un input hidden, et l'action de ce form est # (pour aller vers la même page)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <?php print_r('</br>post: '); print_r($_POST); ?>
Comme toutes les pages passent par header.php, j'ai supposé qu'au reload il repasse par locale.php et donc dans $_POST je devrais trouver ma valeur language. Mais je ne la trouve pas, rien ne semble passé en POST.
Voyez-vous un souci?
Merci d'avance.
Nicolas.
Partager