Back to top

This is an old revision of the document!


Templates

Every template is an instance of the <php>Template</php> class defined in include/utils.php.

Template inheritance

Rack templates support basic template inheritance, provided by the following functions:

  • <php>Template→extends($template)</php> This function sets the parent template, where <php>$template</php> as a path relative to the current template.
  • <php>Template→begin($block_name)</php> This function begins a new block.
  • <php>Template→end()</php> This function ends a block.

Note that nested blocks are not supported and that blocks are only allowed in templates that extend a parent template.

The following snippets demonstrate the use of blocks and template inheritance.

page.phtml
<?php $this->extends('layout.phtml') ?>
 
<?php $this->begin('content') ?>
Hello world!
<?php $this->end() ?>
layout.phtml
<html>
  <head>
    <title><?= $title ?></title>
  </head>
  <body>
   <?= $content ?>
  </body>
</html>

Context

Templates are intitialized with a context object, which is an associative array. The individual elements of this array are made available in the templates as regular variables (see extract). Consider the context

<PHP> $context = [

'title' => 'Home',
'page_id' => 'index'

]; </PHP>

and the template

<PHP> <html>

<head>
  <title><?= $title ?></title>
</head>
<body>
   <h1><?= $title ?></h1>
   page_id: <?= $page_id ?>
</body>

</html> </PHP>

which renders as

<HTML>

<h1>Home</h1>
page_id: index

</HTML>

Template functions


documentation/rack/reference/templates.1527270272.txt.gz · Last modified: 2022/04/03 16:00 (external edit)