Suppose contry de $ est 'de' ou 'à'.
Je suppose que la langue est l'allemand ('de')
vous pouvez donc obtenir les paramètres régionaux comme celui-ci:
$locale = new Zend_Locale('de_' . strtoupper($contry));
Vous pouvez utiliser un validateur comme ceci:
$validator = new Zend_Validate_PostCode('de_' . strtoupper($contry));
ou
$validator = new Zend_Validate_PostCode($locale);
Éditer1
avec votre commentaire:
Si vous avez seulement la région, vous ne pouvez pas obtenir les paramètres régionaux. Par exemple, si la région est 'et'
, vous ne pouvez pas savoir si les paramètres régionaux sont 'aa_ET'
ou 'am_ET'
.
Donc je pense que le meilleur soluton est de modifier votre liste pour obtenir la bonne valeur dans le POST.
Par exemple, au lieu de mettre 'en_ZW'
'zw'
Edit2
Après vérification, si vous juste veulent que le validateur Zend_Validate_PostCode
, il y a un moyen.
En effet, chaque local xx_XX signifie la langue et la région et pour toutes les langues dans la même région, il y a le même code postal.
Voici le code que vous récupérerez le validateur:
$contry = 'at';
$list_locale = Zend_Locale::getLocaleList();
$contry_caps = strtoupper($contry);
foreach($list_locale as $locale_str => $bool){
$locale_obj = new Zend_Locale($locale_str);
if ($contry_caps == $locale_obj->getRegion()){
$locale = $locale_str;
break;
}
}
$validator = new Zend_Validate_PostCode($locale);
Cependant, sachez que Somes régions n'a pas un code postal défini dans Zend (la version est je 1.12.6).
Voici la région qui ne dispose pas d'un validateur pour le Code postal:
001
AE
EH
LY
PS
QA
YE
BT
150
AG
BS
BZ
DM
FJ
GD
GI
GM
GY
JM
KI
KN
KY
LC
MW
SB
SL
SS
TT
UM
VC
VG
WS
419
BO
CO
CU
EA
IC
PA
PE
SV
IR
BF
BJ
BL
CI
GA
MF
KP
MM
AW
CW
SR
SX
ST
TL
AL
VN
C'est exactement ce que je cherchais, merci – andrepolo