Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp09/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp09/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp09/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2009 - Gruppe 3 - Team 3

Template-Engines

von F.Hebestreit, P. Middendorf

Smarty

Installation

  • Runterladen von http://www.smarty.net/download.php.
  • Entpacken in Verzeichnis $v.
  • Im Projektverzeichnis Verzeichnisse templates, templates_c erstellen.
  • PHP-Dateien erstellen, oben:
    define('SMARTY_DIR',$v); 
    require_once(SMARTY_DIR.'/Smarty.class.php');

Benutzung

Ein Objekt vom Typ Smarty entspricht einem Smarty-Template, also pro Template ein
$smarty = new Smarty;

Variablenzuweisung
$smarty->assign('n',$wert);
wobei n der Name der Variable ist.
Flache Variablen

Mit greift man auf die Variable foo zu.

foreach

Zum Durchlaufen von assoziativen Arrays (auch numerisch wie in array('foo','bar'). Syntax:

<ul>
{foreach from=$a key=k item=v}
<li>{$k}: {$v}</li>
{/foreach}
</ul>

Wobei $a der Name des Arrays ist und k und v die Laufvariablen fuer den Schluessel und den Wert. Es kann noch ein {foreachelse} hinzugefügt werden, das ausgegeben wird, wenn das Array leer ist. Für weiteres siehe Doku.

Sections

Ebenfalls zum Durchlaufen von Arrays

{section name=i loop=$mypersons}
  <tr>
	<td>{$mypersons[i].name}</td>
	<td>{$mypersons[i].zipcode}</td>
	<td>{$mypersons[i].age}</td>
  </tr>
{/section}

Wobei $mypersons ein assoziatives Array ist. section hat Sonderbefehle wie step oder start, siehe Doku.

Escaping

Will man die Smarty-Kommandos bzw. Text in geschweiften Klammern verwenden, ohne dass sie von Smarty interpretiert werden, muss man sie mit {literal}...{/literal} umschliessen.

HTML-Formulare

Smarty bietet Konstrukte, um aus den Variablen direkt HTML-Formularfelder zu generieren. Beispiel fuer ein Dropdownfeld:

{html_options name=foo options=$myarray}

Wobei $myarray ein Array ist, was die Optionswerte mit dem anzuzeigenden Text assoziiert. foo ist der Name des generierten Formularfeldes.

Anderes

Smarty verfügt noch über weitere Konstrukte, wie z.B. Bedingungskonstrukte via {if}, {else}. Man kann auch Funktionen auf die Templatevariablen anwenden, z.B. gibt {$x | date_format "%Y"} das Jahr des in $x gespeicherten UNIX-Timestamps aus.

Flexy

Installation

<?php
require_once 'HTML/Template/Flexy.php';
 
class flexyutility
{
	static function output($filename,$object) 
	{
		$o = new HTML_Template_Flexy(
			array(
	      		'templateDir'   => 'templates/',
	      		'compileDir'    => 'templates_c/',
	      		'forceCompile'  => 0,
	      		'debug'         => 0,
	      		'locale'        => 'en',
	      		'compiler'      => 'Standard'));
		$o->compile($filename);
		$o->outputObject($object);
	}
}
?>

Benutzung

Erstelle Klasse k, die auszugebenden Daten als Instanzvariablen enthaelt. Rufe dann
flexyutility::output($dateiname,$k)
auf, wobei $k eine Instanz von k ist.

Flache Variablen

Auf einfache Variablen kann im Template mit {foo} zugegriffen werden.

foreach

Zum Durchlaufen von assoziativen Arrays. Syntax:

<ul>
<li flexy:foreach="mydata,key,value"> insert code here </li>
</ul>

Wobei mydata ein Array ist und innerhalb des Tags auf die Variablen key und value normal zugegriffen werden kann.

Anderes
  • Escaping ist bei Flexy nicht noetig, weil die flexy-Kommandos sich in einem separaten HTML-Namensraum befinden.


Page last modified on September 04, 2009, at 02:19 PM