Kein Zugriff auf Globales Array

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kein Zugriff auf Globales Array

    Hallo,

    ich habe ein kleines Problem.
    Ich benutze die SmartyTemplate-Engine und bin dabei auf folgendes Problem gestroßen:

    Ich habe eine Index.php und ein Index.tpl. In der Index.php wird das Template gefüllt. Der Code der Index.php sieht so aus:
    PHP-Code:
                    include 'sessionhelpers.inc.php';
        include 
    'header.php';
        
    $smarty = new Smarty;
        
    $smarty->assign('navi','navi');
        
    $smarty->assign('fileName',$action);
        
    $smarty->display('index.tpl'); 
    der Code für die index.tpl sieht so aus:
    PHP-Code:
    <html>
        <
    head>
            <
    title>Index.tpl</title>
        </
    head>
        <
    body>
            <
    div class="header">
                <
    img src="images/sternLeft.gif" alt="Logo">
            </
    div>
            <
    div class="navi">
                <
    br>
                {
    include_php file="pages/$navi.php"}
            </
    div>
            <
    div class="content">
                {
    include_php file="pages/$fileName.php"}
            </
    div>
        </
    body>
    </
    html
    In der Header.php wird die Smarty.class.php includiert. So die Index macht nichts anderes als die navi-Datei zuladen und die ausgewählte Seite.
    Jetzt habe ich in der Header.php ein Globales Array definiert mit Userinformationen. Leider habe ich in der navi.php, die wiederum die navi.tpl füllt keinen Zugriff auf dieses Array und kann somit z.B. den Userlevel nicht auslesen und die Navigation nicht generieren.
    WEiß vielleicht jemand, wieso ich in der navi.php keinen Zugriff auf das Array habe. In der navi.php includiere ich die Header.php nicht nocheimal da sie ja bereits in der index.php includiert ist und sämliche Seiten in der index.php aufgerufen werden und somit immer die header.php includiert wird.

    Hoffe mir kann jemand helfen, ich weiß nicht mehr was ich machen kann.

    Vielen Dank
    Marcus
    Zuletzt geändert von Toast; 29.11.2005, 07:40.

  • #2
    header.php definiert das Array.
    Dann erzeugst du ein Smarty-Objekt.
    Nun weist du - imho sinnlos, weil statisch - der Template-Variablen navi den String 'navi' zu.
    Jetzt noch der Template-Var fileName den Wert von $action übergeben und schon wird das ganze angezeigt/ausgegeben.

    Fällt dir was auf? Nix navi.php!

    Kommentar


    • #3
      Guten Morgen,

      ich habe gerade noch das index.tpl hinzugefügt, falls es weiterhilft.
      Vielleicht kannst du nochmal kurz drauf schauen, da ich ansonsten dir nicht folgen kann. Die navi.php wird doch aufgerufen, sonst würde ja das navi.tpl nicht gefüllt werden oder stehe ich gerade voll auf der Leitung?

      Gruß Marcus

      Kommentar


      • #4
        Aha! Dann zeig mal noch die navi.php.

        Kommentar


        • #5
          Ich habe sie etwas verkleinert (zuweisung von template variablen weggelessen, die mit der sache nichts zu tun haben):

          PHP-Code:
          <?php
              $template 
          = new Smarty;
              
              if(
          $userinfos['userLevel'] == || $userinfos['userLevel'] == 2)
                  
          $navipage "/templates/naviLevelOne.tpl";
              else if(
          $userinfos['userLevel'] == || $userinfos['userLevel'] == 4)
                  
          $navipage "/templates/naviLevelTwo.tpl";
              else if(
          $userinfos['userlevel'] == 5)
                  
          $navipage "/templates/naviLevelThree.tpl";

              
          /*Hier sind noch ein paar zusätzliche Templatezuweisungen, die ich weggelassen habe*/
                      
              
          $template->display($navipage);
          ?>
          wie du siehst versuche ich hier auf das Globale Array $userinfos aus der Header.php zuzugreifen um das entsprechende Template zu laden. Doch es wird mir nichts angezeigt da ich keine Zugriff auf das Array habe. Das habe ich dadurch erkannt, weil ich einer Templatevariable den Userlevel zuweisen wollte und dabei wurde eben nichts ausgegeben.

          Gruß Marcus

          Kommentar


          • #6
            http://smarty.php.net/manual/en/lang...nclude.php.php !
            http://php.net/global

            Kommentar


            • #7
              Hi,

              sorry so wirklich schlau werde ich daraus nicht, außer das ich include_php nicht mehr verwenden sollte und stattdesen mir eine "smarty-function" zusammenbasteln soll, die mir die Navigation erstellt. So habe ich das bisher verstanden aber löst dies das Problem mit zugriff? Ich kann es im moment nicht testen da ich auf Arbeit bin aber ich kann mir nicht vorstellen, dass es klappt.
              Vielleicht kannst du ja kurz deine Gedankengänge schreiben.

              Sorry war gestern ein langer Tag und leider eine kurze Nacht, kann sein das ich deshalb ein wenig auf der Leitung sitze.

              Marcus

              Kommentar


              • #8
                Hi,

                ich habe mein Problem gelöst bzw. vielleicht bestand es nicht einmal

                Ich kann es jetzt leider nicht genau sagen da ich meinen code heute nochmal anders geschrieben habe und da ging es zu erst auch nicht, als ich jedoch festgestellt habe das ich den feldnamen im Array falsch geschrieben habe ging es dann. Daher kann ich es nicht genau sagen.

                Gruß Marcus

                Kommentar

                Lädt...
                X