masterpuffin / pesto
Pesto PHP Template Engine
Requires
- php: >=7.4
This package is auto-updated.
Last update: 2025-03-10 20:24:11 UTC
README
Cache
must be writable by www-dataComponents
Views
Commads
#Components = [<ComponentName>,...]
Defines the components that are available in the current template
#Extends = [<TemplateName>]
Defines another template which the templates expands into. Only one entry is possible
@Varible
Declares a variable in a custom component und renders the variable in the component itself
#Block(<blockname>) <content> #Endblock
Defines in which parent block the content inside this block should be rendered
#Block(<blockname>)#Endblock
Defines where the content from the child block should go
PHP variables declared inside a block can only be accesses inside this block. PHP variables declared outside a block can be accessed everywhere.
{{ <PHPVariable> }}
Echoes a PHP variable. Objects and arrays are supported. Variables are autoescaped.
Examples
Example for rendering a template
$p = new Pesto(__DIR__ . "/"); $p->enableCaching = false; #True or false $r = $p->render('Page'); #Templatename without ending echo $r;
Example for a template
Base.pesto.php
#Components = [Alert] <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>#Block(title)#Endblock</title> </head> <body> <Alert @title="HWinPesto" @attribute="Hello World in Page"></Alert> #Block(content)#Endblock </body> </html>
Example for an expending template
Page.pesto.php
#Components = [Alert] #Extends = [Base] #Block(title) This is a title #Endblock #Block(content) <div> <p>Dies ist ein Text</p> <div> <Alert @title="Beispiel" @attribute="Hello World">Moin</Alert> <Alert @title="Beispiel2" @attribute="Hello World2"></Alert> </div> <?php $news = "thisisnews"; $image = new Image("Image Name","Image URL"); ?> <p>{{ $news }}</p> <p>{{ $image->name }}</p> </div> #Endblock
Example for a component
Alert.pesto.php
Be sure to wrap strings in quotes
<div class="alert"> <h1>{{ @title }}</h1> <p>{{ @attribute }}</p> <p>{{ @content }}</p> <p>{{ function( "@string", @variableOrInt }}</p> <div>