Skip to content

MarcelloDuarte/pug-slim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pug Renderer

This is a (heavily based on the PhpRenderer) renderer for rendering Pug view scripts into a PSR-7 Response object. It works well with Slim Framework 3.

Security risks

Pug Renderer uses Pug.php under the hood. Pug Renderer is merely a thin layer to Pug.php work with Slim 3. We will not keep track of vulnerabilities. Please refer to the original project to find out more how to prevent issues and to report vulnerabilities.

Installation

Install with Composer:

$ composer require md/pug-slim

Usage with Slim 3

use Slim\Views\PugRenderer;

include "vendor/autoload.php";

$app = new Slim\App();
$container = $app->getContainer();
$container['renderer'] = new PugRenderer("./templates");

$app->get('/hello/{name}', function ($request, $response, $args) {
    return $this->renderer->render($response, "/hello.pug", $args);
});

$app->run();

Usage with any PSR-7 Project

//Construct the View
$pugView = new PugRenderer("./path/to/templates");

//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"

Exceptions

\RuntimeException - if template does not exist

\InvalidArgumentException - if $data contains 'template'

References

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published