orbis-labs/pug-symfony

Pug template engine for Symfony

2.2.3 2017-07-03 19:19 UTC

README

Latest Stable Version Build Status StyleCI Code Climate

Pug template engine for Symfony

Install

In the root directory of your Symfony project, open a terminal and enter:

composer require orbis-labs/pug-symfony

Add in app/config/services.yml:

services:
    templating.engine.pug:
        class: PugBundle\PugTemplateEngine
        arguments: ["@kernel"]

Add jade in the templating.engines setting in app/config/config.yml:

...
    templating:
        engines: ['pug', 'twig', 'php']

Configure

You can set pug options by accessing the container (from controller or from the kernel) in Symfony.

$services = $kernel->getContainer();
$pug = $services->get('templating.engine.pug');
$pug->setOptions(array(
  'pretty' => true,
  'pugjs' => true,
  // ...
));
// You can get the Pug engine to call any method available in pug-php
$pug->getEngine()->share('globalVar', 'foo');
$pug->getEngine()->addKeyword('customKeyword', $bar);

See the options in the pug-php README: https://github.com/pug-php/pug And methods directly available on the service: https://github.com/pug-php/pug-symfony/blob/master/src/Jade/JadeSymfonyEngine.php

Usage

Create jade views by creating files with .pug extension in app/Resources/views such as contact.html.pug with some Jade like this:

h1
  | Hello
  =name

Then call it in your controller:

/**
 * @Route("/contact")
 */
public function contactAction()
{
    return $this->render('contact/contact.html.pug', [
        'name' => 'Bob',
    ]);
}

Deployment

In production, you better have to pre-render all your templates to improve performances. To do that, you have to add Pug\PugSymfonyBundle\PugSymfonyBundle in your registered bundles.

In app/AppKernel.php, in the registerBundles() method, add the Pug bundle:

public function registerBundles()
{
    $bundles = [
        ...
        new PugBundle\PugBundle(),
    ];

This will make the assets:publish command available, now each time you deploy your app, enter the command below: php bin/console assets:publish --env=prod