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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[phpBB] Function avec le Template phpBB


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 12
    Points : 10
    Points
    10
    Par défaut [phpBB] Function avec le Template phpBB
    Bonjour je viens de faire un formulaire avec une gestion des thèmes grâce à au moteur de template phpbb.

    J'ai voulu mettre la génération des menus déroulants dans une fonction, car j'en ai pas mal, mais c'est pas parce que mon bout de code marchait hors fonction, qu'il allait s'adapter sans râler. (^^)

    Voilà le code d'origine qui marche mais que j'ai pas trop envie de le coller vingt fois dans ma page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    foreach ($marque as $key => $value)
    {
    $selected = ($key == @$_SESSION['marque']) ? 'selected="selected"' : '';
    $template->assign_block_vars('pre_marque.marque_opt', array(
    'OPTION' =>$value,
    'VALUE' =>$key,
    'SELECTED' =>$selected,
    ));
    }
    Et voilà la fonction qui ne veut pas rouler.

    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
     
    function TableauSelect($tableau,$valeur,$nom)
      {
         foreach ($tableau as $key => $value)
           {
              $selected = ($key == $valeur) ? 'selected="selected"' : ''; 
              $template->assign_block_vars($nom, array(
                  'OPTION' =>$value,
                  'VALUE' =>$key,
                  'SELECTED' =>$selected,
              ));
           }      
      }
     
    TableauSelect($marque, @$_SESSION["marque"],'pre_marque.marque_opt');
    le problème c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $template->assign_block_vars($nom, array( ));
    Si j'ai bien compris, il s'agit d'une class et je n'arrive pas a faire en sorte que ma fonction de s'initialise qu'une fois la class lancée par le bout de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $template = new Template('./theme');
    $template->set_filenames(array('index' => 'index.tpl'));
    Je débute en php et là je suis vraiment dans l'impasse...

    Si quelqu'un peu me mettre sur la voie, merci à lui.

  2. #2
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    Dans ta fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function TableauSelect($tableau,$valeur,$nom) 
      { 
         foreach ($tableau as $key => $value) 
           { 
              $selected = ($key == $valeur) ? 'selected="selected"' : ''; 
              $template->assign_block_vars($nom, array( 
                  'OPTION' =>$value, 
                  'VALUE' =>$key, 
                  'SELECTED' =>$selected, 
              )); 
           }      
      }
    Je ne comprends pas bien ta question mais je vois que a aucun moment tu ne passe $template en argument.
    Pourquoi ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Pardon manque peut-être le code du template pour mieux saisir.

    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
     
    <!-- BEGIN pre_marque -->
    <p>
    <label for="marque">Marque</label> 
    <select id="marque" name="marque" size="1" onchange="document.sous.submit()">
    <!-- BEGIN marque_opt -->
    <option value="{pre_marque.marque_opt.VALUE}" {pre_marque.marque_opt.SELECTED}>{pre_marque.marque_opt.OPTION}</option>
    <!-- END marque_opt -->
    </select>
    </p>
    <p>
    <label for="model">Mod&egrave;le</label>
    <select  id="model" name="model" onchange="document.sous.submit()">
    <!-- BEGIN model_opt -->
    <option value="{pre_marque.model_opt.VALUE}" {pre_marque.model_opt.SELECTED}>{pre_marque.model_opt.OPTION}</option>
    <!-- END model_opt -->
    </select>
    </p>
    <!-- END pre_marque -->
    Je pensais faire comme ça pour éviter de mélanger les blocs dans mon fichier *.tpl car j'ai des conditions qui font que certains vont s'afficher et d'autres non. Si je fixe sur le même nom de bloc, ça marchera pas.

    Hors fonction tout marche, et j'ai fait un essai en retirant l'argument $nom et en le fixant le problème reste le même.

    Fatal error: Call to a member function on a non-object in c:\documents and settings\administrateur\bureau\travail\new321auto\index.php on line 19

  4. #4
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    Oui et la ligne 19 je parie que c'es :

    $template->assign_block_vars($nom, array(
    'OPTION' =>$value,
    'VALUE' =>$key,
    'SELECTED' =>$selected,

    Normal, $template n'est pas connu dans ta fonction.

    Il faut le passer en paramêtre.

  5. #5
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Salut,
    si tu veux utiliser une variable (en locurence $template ici même) dans une fonction tu dois la rendre globale en rajoutant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    global $nom_de_ta_variable;
    avant de l'utiliser, par exemple dans ton cas fait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function TableauSelect($tableau,$valeur,$nom)
      { 
          global $template;
    PS : va voir mon tuto dans ma signature si tu as du mal avec le système de template phpBB.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup, je vais essayer. Le tuto sur les templates, je le connais c'est grâce à lui que j'ai commencé à ma lancer dedans, c'est plutôt côté function que je bloquais.

    edit :

    Merci ça marche, le malheur, c'est que j'ai cherché un tuto sur les fonctions et j'en ai pas trouvé. Je vais continuer à chercher j'ai des l'accunes de ce côté là...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [phpBB] Envoi des variables au gabarit avec phpBB Template phpBB
    Par okoweb dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 18/05/2010, 21h31
  2. [phpBB] Insertion du résultat d'un template phpBB dans un autre
    Par schnito dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 22
    Dernier message: 05/03/2009, 11h05
  3. Template ( phpBB-Phplib ) et affichage de miniature via GD2 :x
    Par Rohann dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 06/09/2006, 10h47
  4. [phpBB] Template phpBB
    Par schnito dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 20/02/2006, 09h50
  5. [phpBB] Template phpBB et/ou phpLib
    Par corwin dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 14/02/2006, 15h45

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