Ankündigung

Einklappen
Keine Ankündigung bisher.

Lösungsansatz gesucht

Einklappen

Neue Werbung 2019

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

  • Lösungsansatz gesucht

    Halli hallo,
    ich hab mal wieder nen kleines Problem wo ich nicht weiter komme.
    Und zwar geht es darum : Ich habe mir eine sehr kleine Template-Engine geschrieben. Funktioniert tadellos nur hab ich ein Problem.
    Ich habe eine Funktion die einen "switch" ermöglicht.

    PHP-Code:
    <?php
        
    function do_switch() {
            if (!isset(
    $_GET['module'])) {
                
    $_GET['module']="modules/news";
            };
            if (
    file_exists($_GET['module'].".php")) {
                include(
    $_GET['module'].".php");
            } else {
                include(
    "core/fehler.php");
            };
        };
    ?>
    Das ist also die Funktion. Und damit will ich das gute Stück einsetzen :
    PHP-Code:
    <?php
        $main 
    str_replace("{content}"do_switch(), $main);
    ?>
    Japp, wie gedacht included er nicht an der Stelle wo er soll sondern oberhalb davon. Das liegt wohl daran das ich keinen Return Wert in der Funktion habe. Aber das müsste ich doch dann durch eval jagen, oder ? Also das Problem : Wie pack ich die obere Funktion (veränderungen daran eingeschlossen) in meinen Replace, das er mir an der Stelle wo mein {content} steht die Funktion ausführt.

    Ich hoffe ihr versteht auf was ich hinaus will. Ist wohl ein starker Logikfehler, aber mir fehlt mommentan der Blick in die richtige Richtung.
    Vielen dank schonmal

  • #2
    nach einem include wird der code sofort ausgeführt

    ich denke in z.b. der news.php steht was von echo $ergebnis; aber nein. du musst das ergebnis der unterseiten in einer variable speichern lassen und die dann am besen von der function zurückgeben lassen

    Kommentar


    • #3
      Vielleicht benutzt du eine Art solche Konstruktion:
      PHP-Code:
      <?php
         
      function do_switch() {
            
      ob_start();
            if (!isset(
      $_GET['module'])) {
               
      $_GET['module']="modules/news";
            }
            if (
      file_exists($_GET['module'].".php")) {
               include(
      $_GET['module'].".php");
            } else {
               include(
      "core/fehler.php");
            } 
      // was suchen eigentlich die Semikolons (;) hier?
            
      $content ob_get_contents();
            
      ob_end_clean();

            return 
      $content;
         }

      $content do_switch();
      $main str_replace("{content}"$content$main); 
      ?>

      Kommentar

      Lädt...
      X