who_to_greet = "World";
// execute() returns result of template
echo $phptal->execute();
''hello.xhtml'':
Hello !
===== Gathering of data =====
This is not a requirement, but good advice: avoid passing PHPTAL object (or template abstraction wrapper) around your entire program. MVC programs should be independent of their views (mental exercise: would your application break if there was no view?).
Instead of setting variables directly on PHPTAL object, make your methods //return// all required information. You can also pass helper objects to PHPTAL which will load data on demand.
$v) $phptal->set($k,$v);
===== Layout template ======
''[[http://phptal.org/manual/en/split/phptal-blocks.html|function name() {…}
| …
|
| name();
|
|
| function name($argument_name) {…}
|
|
| name("argument data");
|
argument data
|
''main.xhtml'':
\\
\\
\\
''subpage.xhtml'':
Hello world
Note that the code didn't use ''metal:*-slot'' to set title of the page. Macros "see" variables [[http://phptal.org/manual/en/split/tal-define.html|defined]] in templates that call them, so simple values can be easily passed using variables.
You don't have to fill all slots. Here ''main.xhtml'' defines ''other-stuff-in-head'' slot, which you could use e.g. for adding JavaScript or link to CSS, but you don't have to.