rareloop / primer-template-engine-twig
Twig template engine for Primer
Installs: 5 195
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 8
Forks: 0
Open Issues: 3
pkg:composer/rareloop/primer-template-engine-twig
Requires
- php: >=7.0
- twig/twig: ^2.0.0
Requires (Dev)
- phpunit/phpunit: 5.*
- rareloop/primer-core: 2.0.*
This package is auto-updated.
Last update: 2025-10-12 06:42:48 UTC
README
A template engine for Primer that uses Twig rather than the deafult (Handlebars).
Installation
-
In the
composer.jsonin your Primer install, replace:"rareloop/primer-template-engine-handlebars": "dev-master"
with:
"rareloop/primer-template-engine-twig": "1.0.*"
-
Run
composer update. -
Modify your
bootstrap/start.phpfile and change thePrimer::startcall to include thetemplateClasse.g.$primer = Primer::start(array( 'basePath' => __DIR__.'/..', 'templateClass' => Rareloop\Primer\TemplateEngine\Twig\Template::class, ));
-
Replace all
.hbsfiles in your patterns and views with `.twig' files. If you don't want to do this by hand you can download the base Primer files in Twig format from this repo.
Usage
Including patterns within one another
Any pattern can be included within another by using the standard include syntax, e.g.
<div class="sub-pattern"> {% include 'elements/forms/input' %} </div>
More information on using {% include %} and manipulating the passed in context can be found on the Twig website.
Extending Templates
By default, Primer will wrap all page Templates with a common View (views/template.twig). When using {% extends %} this wrapping is sometimes undesirable, in such circumstances you can disable this behaviour in a couple of ways.
-
On a per page Template basis. Add the following to the Templates
data.jsonfile:{ "primer": { "view": "custom-view" } } -
Site wide. Add
wrapTemplate: falseto thePrimer::startcall inbootstrap/start.php, e.g.$primer = Primer::start([ 'basePath' => __DIR__.'/..', 'templateClass' => TwigTemplateEngine::class, 'wrapTemplate' => false, ]);
Twig Template Cache
By default Primer uses a directory called cache inside the project root for cache files. To change this to somewhere else you can set an alternative when you start Primer in bootstrap/start.php, e.g.
$primer = Primer::start(array( 'basePath' => __DIR__.'/..', 'cachePath' => 'absolute/path/to/cache/dir', 'templateClass' => Rareloop\Primer\TemplateEngine\Twig\Template::class, ));
Custom Events
Most of the Primer events are still available, this package adds a few engine specific events too: