kostenloser Webspace werbefrei: lima-city


Twig: Renderausgabe -> weiße Seite

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    robbmaster

    Kostenloser Webspace von robbmaster

    robbmaster hat kostenlosen Webspace.

    Hallo. ;)

    Ich benutze als Templatesystem das System Twig. ;)
    Ich habe mir eine Klasse geschrieben, um das ganze nochmal zu vereinfachen.
    [public] func: init ($file)
                    require_once INCPATH.TWIGPATH.'Autoloader.php';
    		Twig_Autoloader::register();
    		
    		global $loader;
    		global $twig;
    		global $template;
    		
    		$loader = new Twig_Loader_Filesystem('design');
    		
    		$twig = new Twig_Environment($loader, array(
    			'cache' => 'cache',
    		));
    		
    		$template = $twig->loadTemplate($file.DESIGNSUFFIX);
    		
    		return true;


    -> Soll das Templatesystem initialisieren: Autoloader wird includiert und gestartet, Templateordner festgelegt, und die entsprechende Templatedatei includiert (Cache wird auch noch gesetzt

    [public] func: renderPage (&$array)
                    global $template;
    		$template->render($array);
    		return true;


    -> Soll die Seite rendern.

    beispiel:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>{{ pageheader }}</title>
    </head>
    
    <body>
    {{ content }}
    </body>
    </html>


    -> Diese Beispiel ist die index.html. In dem Array, das an renderPage übergeben wird, sind die assoziativen Indexe pageheader und content definiert.

    Trotzdem erhalte ich eine weiße Seite. Weiß jemand Rat?

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du gibst einfach nichts aus, da fehlst das echo vor render ;) Alternativ kannst du statt render + echo einfach display nutzen, was nebenbei auch schneller sein wird.

    Ansonsten: Ich habe das jetzt so verstanden, dass du da eine Klasse geschrieben hast. Wenn das so ist, dann nutze bitte Klassenvariablen statt globals. Das ist der Sinn der Sache. Weiterhin muss eine Funktion keinen Wert zurückgeben. Immer true zurückgeben macht nicht sonderlich Sinn. Das Array als Referenz zu übergeben halte ich übrigens auch für unnötig, ich wüsste nicht wieso Twig die Daten bearbeiten dürte. Also, dein Code mit Klassenvariablen:
    class Template {
        protected static $twig;
        protected static $template;
    
        public static function init($file)
                    require_once INCPATH.TWIGPATH.'Autoloader.php';
    		Twig_Autoloader::register();
    		
    		self::$twig = new Twig_Environment(new Twig_Loader_Filesystem('design'), array(
    			'cache' => 'cache',
    		));
    		
    		self::$template = $twig->loadTemplate($file.DESIGNSUFFIX);
        }
    
        public static function renderPage($array)
    		self::$template->display($array);
        }
    }


    Das sollte gehen ;)

    PS: Und toll, dass du dich für Twig entschieden hast :D

    Beitrag zuletzt geändert: 21.8.2010 8:59:18 von nikic
  4. Autor dieses Themas

    robbmaster

    Kostenloser Webspace von robbmaster

    robbmaster hat kostenlosen Webspace.

    Ups. Die globals waren zum Teil noch enthalten, da ich sie in einer vorherigen Version später noch benutzt habe. Aber danke. :) Ich wusste gar nicht, das die render()-Funktion der Klasse nur den Wert zurückgibt. ;)

    Das true habe ich geschrieben, weil ich später auch noch ein eventuelles false schreiben sollte. Ich nimms aber erstmal raus. Danke.

    PS: Es sieht wirklich super einfach aus. Klasse!

    Edit: Unterschied $this-> und self?

    Beitrag zuletzt geändert: 21.8.2010 21:48:22 von robbmaster
  5. $this-> ist für normale Properties (also mit Instanz), self:: und static:: sind für statische (also ohne Instanz).
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!