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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<?php include 'include/header.php';?>
header.php
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>&nbsp;
			<a href="" onclick="javascript:setLocale('en')">EN</a>&nbsp;
			<a href="" onclick="javascript:setLocale('es')">ES</a>&nbsp;-->
 
			<?php foreach ($AVAILABLE_LANGUAGES as $languageKey => $languageValue) { ?>
				<a href="" onclick="javascript:setLocale('<?=$languageKey?>')"><?=$languageValue?> POST</a>&nbsp;
 
			<?php }?>
		</div>
Dans Constants.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' );
?>
et dans locale.php j'ai çà:
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 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)
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.