antidot-fw / phug-template-renderer
Antidot Framework Phug template renderer library
Fund package maintenance!
kpicaza
Requires
- php: ^7.4|^8.0
- antidot-fw/template-renderer: ^1.0.0
- pug/pug: ^0.2.0
Requires (Dev)
- phpro/grumphp: ^1.3.0
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.4
This package is auto-updated.
Last update: 2024-10-30 01:39:14 UTC
README
Install
Using composer
composer require antidot-fw/phug-template-renderer
Antidot framework
It will work out of the box, the only thing you need is to inject the TemplateRenderer interface in your request handler constructor
As standalone component
See factory classes at src/Container
.
Config
<?php declare(strict_types=1); $config = [ 'pug' => [ 'pretty' => true, 'expressionLanguage' => 'js', 'pugjs' => false, 'localsJsonFile' => false, 'cache' => 'var/cache/pug', 'template_path' => 'templates/', 'globals' => [], 'filters' => [], 'keywords' => [], 'helpers' => [], 'default_params' => [], ], ];
Usage
See full PHP Pug documentation for more detail.
In a request handler
<?php declare(strict_types=1); use Antidot\Render\TemplateRenderer; use Laminas\Diactoros\Response\HtmlResponse; use Psr\Http\Server\RequestHandlerInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; class SomeHandler implements RequestHandlerInterface { private TemplateRenderer $template; public function __construct(TemplateRenderer $template) { $this->template = $template; } public function handle(ServerRequestInterface $request) : ResponseInterface { return new HtmlResponse( $this->template->render('index', [ 'name' => 'Koldo ;-D', ]) ); } }
// templates/index.pug html head title Antidot Todo List app link(rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css") link(href="//fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet") body main section(class="container") h1 Hello #{name} script(type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js") block scripts