IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[PHPLIB] Insertion code PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 64
    Par défaut [PHPLIB] Insertion code PHP
    Bonjour,

    Pour des des raisons de simplicité j'ai concu un site web avec des fichiers de langues que je parse dès l'affichage de l'index.
    J'utilise la bibliotheque phplib qui s'avere relativement rapide. Mais le problème c'est que je suis obligé de définir des variables (par exemple {PRIX}) pour chaque élément du template correspondant à une occurence dans le fichier de langue ( {PRIX} => FR_PRIX ou {PRIX} => EN_PRIX).

    c'est pour cela que je souhaite juste, afin d'eviter de passer par des variables, inserer directement le code php correspondant à l'element du fichier de langue.

    Je voudrai savoir si cela est possible en modifiant simplement la classe Template ou autre ??

    En esperant avoir ete clair

    Merci beaucoup d'avance ^^

    Tom

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 64
    Par défaut
    Je suis donc obligé de passer par un autre moteur de template ??

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Peut être ! Comment gérez-vous le support des différentes langues au niveau du stockage des textes (inclusion d'un tableau, ...) ? Et les variables dynamiques ne pourraient-elles pas vous aider quelque peu ?


    Julp.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 64
    Par défaut
    Citation Envoyé par julp
    Peut être ! Comment gérez-vous le support des différentes langues au niveau du stockage des textes (inclusion d'un tableau, ...) ? Et les variables dynamiques ne pourraient-elles pas vous aider quelque peu ?


    Julp.
    Je gere les langues en lisant un fichier et en declarant les messages, et les morceaux de texte comme constantes a la volée.

    edit: comment faire avec les variables dynamaique ?? je ne vois pas

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Ce que vous voudriez faire n'est plus dans la logique des templates, donc sans modifications je ne pense pas que ce soit possible. Vous utilisez des constantes et malheureusement vous ne pouvez dans ce cas avoir recours aux variables dynamiques (un exemple que je n'ai pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $langue = 'FR'; // Extrait d'un cookie, d'une session ou des en-têtes
    $FR_PRIX = 'prix';
    $EN_PRIX = 'price';
    echo ${$langue . '_PRIX'};
    N'avez-vous pas trouvé d'autres solutions : définir les mêmes variables pour chaque langue (vu qu'une seule langue est utilisée à la fois) ou encore deux fichiers templates, ... ? (ce ne sont que des "idées").

    Faisons tous un brainstorming et on trouvera bien une solution propre et évolutive.


    Julp.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 64
    Par défaut
    Citation Envoyé par julp
    Ce que vous voudriez faire n'est plus dans la logique des templates, donc sans modifications je ne pense pas que ce soit possible. Vous utilisez des constantes et malheureusement vous ne pouvez dans ce cas avoir recours aux variables dynamiques (un exemple que je n'ai pas testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $langue = 'FR'; // Extrait d'un cookie, d'une session ou des en-têtes
    $FR_PRIX = 'prix';
    $EN_PRIX = 'price';
    echo ${$langue . '_PRIX'};
    N'avez-vous pas trouvé d'autres solutions : définir les mêmes variables pour chaque langue (vu qu'une seule langue est utilisée à la fois) ou encore deux fichiers templates, ... ? (ce ne sont que des "idées").

    Faisons tous un brainstorming et on trouvera bien une solution propre et évolutive.


    Julp.

    Merci pour votre réponse.
    En effet, j'utilise les meme variables pour les langues. Je me suis basé sur dotclear qui s'avere assez simple et m'a plu. Apres je ne sais vraiment pas comment faire sachant que phplib est tres simple et que passer par un autre moteur de template serait une perte de tps considérable.

    Merci

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par V_R46
    En effet, j'utilise les meme variables pour les langues. Je me suis basé sur dotclear qui s'avere assez simple et m'a plu.
    Euh c'est pas ce que j'ai pu lire :
    Citation Envoyé par V_R46
    Mais le problème c'est que je suis obligé de définir des variables (par exemple {PRIX}) pour chaque élément du template correspondant à une occurence dans le fichier de langue ( {PRIX} => FR_PRIX ou {PRIX} => EN_PRIX).
    Ne mélangeons pas variables template/PHP et variables (PHP)/constantes.

    Citation Envoyé par V_R46
    Apres je ne sais vraiment pas comment faire sachant que phplib est tres simple et que passer par un autre moteur de template serait une perte de tps considérable.
    Ce n'est pas ce que j'ai proposé, et l'utilisation d'un autre système de template vous raménera très probablement au même problème.

    Smarty (un moteur de template bien connu) sait prendre des variables d'un fichier de configuration, vous pourriez reprendre ce système ou quelque chose de similaire. Gettext, librairie/extension qui permet de gérer l'internationalisation, vous permettrait d'éviter de passer par des variables/constantes.


    Julp.

    PS : je n'ai jamais utilisé Dotclear.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 64
    Par défaut
    Voici une partie d'un de mes fichiers de langues :

    ;Error login
    Il semblerai que les informations d'identification saisies soient incorrectes, recommencez.

    ;Bad page
    La page que vous demandez n'existe pas ou est indisponible, veuillez nous en excuser.

    ;Die
    Mauvaise requête. Veuillez envoyer ce message à un administrateur.


    Je lis ce fichiers et je peux utiliser les messages comme suit :

    echo __('Bad page');

    ce qui fait que dans une template je suis obligé de faire n variables template pour afficher n messages. Ce qui ne s'avere pas tres propres je trouves.


    Ce que je voudrai c'est juste eivter les varaibles pour eviter de faire un assign_vars() avec un tableau de 150 entrées. Mais je ne sais pas comment faire.

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Votre méthode ressemble à priori beaucoup au fonctionnement de gettext.

    Si vous ne voulez pas faire manuellement des assign_vars, je vous propose d'ajouter toutes vos variables langues (j'espère qu'elles sont pas trop nombreuses) en utilisant la méthode set_var de la classe Template (par exemple quand vous lisez vos fichiers de langues mais une instance du template sera nécessaire).


    Julp.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 64
    Par défaut
    Citation Envoyé par julp
    Votre méthode ressemble à priori beaucoup au fonctionnement de gettext.

    Si vous ne voulez pas faire manuellement des assign_vars, je vous propose d'ajouter toutes vos variables langues (j'espère qu'elles sont pas trop nombreuses) en utilisant la méthode set_var de la classe Template (par exemple quand vous lisez vos fichiers de langues mais une instance du template sera nécessaire).


    Julp.

    D'accord je vois, mais n'est-ce pas trop couteux de faire ca a chaque chargement de page ?

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Comme précisé ci-dessus tout dépend du nombre !

    Sinon, il est possible d'utiliser la méthode get_undefined qui vous donne toutes les variables (template) inutilisées et vous vous en servez pour récupérer toutes les variables de langues définies dans cette page. Ainsi, vous pourriez lire votre fichier de langue et attribuer une valeur à ces variables non définies. D'autant plus que vous n'avez nul besoin de toucher (patch) à la classe template. Illustration :

    index.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
     
    <?php
    require_once('template.inc.php');
     
    $tpl = new template(); // On garde les valeurs par défaut des paramètres du constructeur
    $tpl->set_file('index', 'index.tpl');
     
    // $ndefvars contiendra les variables langues définies pour cette page
    $ndefvars = $tpl->get_undefined('index');
     
    // on les redéfinit avant affichage et après affectation des autres variables
    foreach ($ndefvars as $k => $v) {
    	$tpl->set_var($k, 'Undefined');
    }
     
    $tpl->parse('sortie', 'index');
    $tpl->p('sortie');
    ?>
    index.tpl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <html>
    	<head>
    		<title>{L_TITLE}</title>
    	</head>
    	<body>
    		{L_CORPS}
    	</body>
    </html>

    Julp.

Discussions similaires

  1. Insertion code php avec append()
    Par nico72 dans le forum jQuery
    Réponses: 44
    Dernier message: 19/10/2011, 16h59
  2. [PHPLIB] Code PHP dans un fichier template
    Par aimti dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 19/10/2008, 17h49
  3. Insertion de code PHP dans un formulaire
    Par laurentSc dans le forum Langage
    Réponses: 4
    Dernier message: 10/03/2008, 09h02
  4. [PHP-JS] Popup d'alerte - insertion dans code PHP ?
    Par bilou95 dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2006, 16h28
  5. [Dreamweaver] Insertion de code php dans un modèle
    Par Nourr dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 03/05/2006, 20h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo