8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Dans mon site (multiligue), je souhaite, à un moment, inclure un fichier dont le nom dépend d'une variable définie préalablement.
Cette variable (lang) définit la langue, et je veux inclure un fichier (menu-xx), où "xx" peut être "fr", "de", "en", ou "es".
Il est facile d'écrire :
<?php if(lang == 'fr'){include "../menu-fr.php";} ?>
	<?php if(lang == 'de'){include "../menu-de.php";} ?>
	<?php if(lang == 'en'){include "../menu-en.php";} ?>
	<?php if(lang == 'es'){include "../menu-es.php";} ?>

et ça marche fort bien...

Mais je me demandais s'il n'y avait pas une façon plus élégante d'écrire ceci, sans faire quatre "if".
Par exemple, concaténer le mot "menu-" avec la variable lang ?
Mais je crois qu'on ne peut pas ouvrir une balise <?php> dans une autre...

Merci d'avance pour tout tuyau... mais c'est plus de la curiosité qu'une nécessité !
Bonne soirée,
Paps
Tu peux faire quelque chose dans le genre :


<?php
if (!isset($lang)) { $lang = 'fr'; } #Au cas où la variable ne serait pas spécifiée

$file = 'menu-'.$lang.'.php'; #Création du nom du fichier en fonction de la variable
include('../'.$file); #appel du fichier
?>

Modifié par MattBPA (15 Sep 2012 - 23:56)
J'aurais quand même vérifié que la variable lang contient une valeur autorisée avant de faire l'include :


$langs = array('fr', 'en', 'es');

if (!isset($lang) || !in_array($lang, $langs)) {
  $lang = 'fr';
}

require '../menu-' . $lang . '.php';
Bonjour et merci !

J'ai tardé à répondre, j'étais absent.
Avant de poursuivre, il me faut - je suis néophyte - approfondir mes connaissances sur les variables définies par "define" ou par "$var=...".

Si besoin, je reviendrai ici...
Bonne journée,
Paps
Bonjour !
Après réexamen de mon site, et la variable "lang" étant préalablement définie (et contrôlée), la syntaxe toute bête est donc :
<?php include '../menu-' . lang . '.php'; ?>

C'est la syntaxe de la concatenation texte/variable qui m'avait échappé.
Problème résolu !
Paps