Ein erstes Beispiel


Um einen ersten Eindruck von PHPTAL zu gewinnen, hier ein einfaches Beispiel statt vieler Worte.

Ihre Vorlage ist ein gültiges XML-/HTML-Dokument (samt Wurzelelement). Die Datei nennen wir my_template_file.xhtml:

<?xml version="1.0"?>
<html>
  <head>
    <title tal:content="title">
      Platz für den Seitentitel
    </title>
  </head>
  <body>
    <h1 tal:content="title">Beispieltitel</h1>
    <table>
      <thead>
        <tr>
          <th>Name</th>
          <th>Telefonnummer</th>
        </tr>
      </thead>
      <tbody>
        <tr tal:repeat="person people">
          <td tal:content="person/name">Name der Person</td>
          <td tal:content="person/phone">Telefonnummer der Person</td>
        </tr>
        <tr tal:replace="">
          <td>Beispielname</td>
          <td>Beispielnummer</td>
        </tr>
        <tr tal:replace="">
          <td>Beispielname</td>
          <td>Beispielnummer</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

In php müssen Sie lediglich die PHPTAL-Bibliothek einbinden und eventuell eine Variable anpassen, um ihre Vorlage zu individualisieren.

<?php
require_once 'PHPTAL.php';

// create a new template object
$template = new PHPTAL('my_template_file.xhtml');

// the Person class
class Person {
    public $name;
    public $phone;

    function Person($name, $phone) {
        $this->name = $name;
        $this->phone = $phone;
    }
}

// let's create an array of objects for test purpose
$people = array();
$people[] = new Person("bla", "0162/4578930");
$people[] = new Person("blabla", "0714/87629");
$people[] = new Person("blubb", "0102/6637912");
$people[] = new Person("blablubb", "0190/123456");

// put some data into the template context
$template->title = 'Der Titeltext';
$template->people = $people;

// execute the template
try {
    echo $template->execute();
}
catch (Exception $e){
    echo $e;
}
?>

Wenn sie das PHP Script ausführen, werden sie etwas ähnlich dem Folgenden erhalten.

<?xml version="1.0"?>
<html>
  <head>
    <title>Der Titeltext</title>
  </head>
  <body>
    <h1>Der Titeltext</h1>
    <table>
      <thead>
        <tr>
          <th>Name</th>
          <th>Telefonnummer</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>bla</td>
          <td>0162/4578930</td>
        </tr><tr> <td>blabla</td>
          <td>0714/87629</td>
        </tr><tr> <td>blubb</td>
          <td>0102/663791</td>
        </tr><tr> <td>blablubb</td>
          <td>0190/123456</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

PHPTAL schert sich nicht besonders um Zeilenumbrüche und Einrückungen in den Dateien, die es liest bzw. erzeugt. Möchten Sie, dass der erzeugte HTML-Code hübsch wird, d.h mit Zeilenumbrüchen und perfekten Einrückungen, müssen Sie ihn eventuell mit HTML-Tidy nachbearbeiten.