pug / slim
Pug template engine adapter for Slim
Fund package maintenance!
kylekatarnls
Open Collective
Tidelift
Requires
- psr/http-message: ^1.0
- pug-php/pug: ^2.7.6 || ^3.4.1
Requires (Dev)
- codeclimate/php-test-reporter: ^0.4.0
- phpunit/phpunit: ^4.8.35 || ^5.7 || ^8.5.15
- slim/slim: ^3.0
Replaces
- md/pug-slim: 1.0
This package is auto-updated.
Last update: 2024-10-13 16:49:24 UTC
README
For details about the template engine see phug-lang.com
Installation
Install with Composer:
composer require pug/slim
Usage with Slim 3
use Slim\App; use Slim\Pug\PugRenderer; include 'vendor/autoload.php'; $slimOptions = []; // here you can pass Slim settings $app = PugRenderer::create(new App($slimOptions), './templates'); $app->get('/hello/{name}', function ($request, $response, $args) { return $this->renderer->render($response, 'hello.pug', $args); }); $app->run();
PS: If you don't pass an application to the create
method, we
will automatically initialize one, so you can just do:
use Slim\Pug\PugRenderer; include 'vendor/autoload.php'; $app = PugRenderer::create(null, './templates');
Usage with any PSR-7 Project
//Construct the View $pugView = new PugRenderer('./path/to/templates', [ 'option' => 'foobar', ]); //Render a Template $response = $pugView->render(new Response(), '/path/to/template.pug', $yourData);
Template Variables
You can add variables to your renderer that will be available to all templates you render.
// via the constructor $templateVariables = [ 'title' => 'Title', ]; $pugView = new PugRenderer('./path/to/templates', [], $templateVariables); // or setter $pugView->setAttributes($templateVariables); // or individually $pugView->addAttribute($key, $value);
Data passed in via ->render()
takes precedence over attributes.
$templateVariables = [ 'title' => 'Title', ]; $pugView = new PhpRenderer('./path/to/templates', $templateVariables); //... $pugView->render($response, $template, [ 'title' => 'My Title', ]); // In the view above, the $title will be "My Title" and not "Title"
By default, pug-php is used. But you can specify an other engine:
$app = PugRenderer::create(null, null, [ 'renderer' => \Phug\Renderer::class, ]);
PS: Phug is automatically installed with default install since Pug-php 3 use it internally. But you can also install different renderer engine, for example tale-pug:
composer require talesoft/tale-pug
$app = PugRenderer::create(null, null, [ 'renderer' => \Tale\Pug\Renderer::class, ]);
Note that in this case, you have no guarantee that all options will work.
References
- Pug-php 3 / Phug official documentation www.phug-lang.com
- Pug-php 3 / Phug live editor pug-demo.herokuapp.com
- To learn more about Pug go to pugjs.org
- Here is an online HTML to Pug converter html2pug.herokuapp.com
Credits
This project is forked from https://github.com/MarcelloDuarte/pug-slim And we added to it phug, pug-php 3, tale-jade and tale-pug support.