plumphp / plum-twig
PlumTwig is a Twig converter for Plum.
Requires
- cocur/vale: ~0.2
- plumphp/plum: ~0.2
- twig/twig: ~1.9
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.5
This package is auto-updated.
Last update: 2024-10-20 09:26:31 UTC
README
PlumTwig is a Twig converter for Plum. Plum is a data processing pipeline for PHP.
Developed by Florian Eckerstorfer in Vienna, Europe.
Installation
You can install PlumTwig using Composer.
$ composer require plumphp/plum-twig
Usage
Please refer to the Plum documentation for more information about Plum in general.
TwigConverter
In its simplest form Plum\PlumTwig\TwigConverter
takes an item and returns a rendered template. The given item is
passed to Twigs render()
method as context. The following code renders the hello.html.twig
template and passes
["name" => "Florian"]
as context to the template. The return value of convert()
is the rendered template.
use Plum\PlumTwig\TwigConverter; $converter = new TwigConverter($twig, 'hello'); $converter->convert(['name' => 'Florian']);
By default .html.twig
is appended on the given template name. You can change the file extension by calling
setFileExtension()
:
$converter->setFileExtension('.twig');
Sometimes different items should be rendered using different templates. If you pass a template property to the
constructor, the template name retrieved from the given item. Because TwigConverter
uses
Vale to retrieve the value this works even if the item is a complex and nested
structure.
$converter = new TwigConverter($twig, 'default', ['template' => 'layout']); // The template name.html.twig is used to render the item $converter->convert(['name' => 'Florian', 'layout' => 'name']);
We have seen that by default TwigConverter
takes an arbitrary item (e.g., an array or object) and converts it into a
string. In many cases the converter will be part of a bigger Plum workflow and you would like to keep the data in the
item. You can pass a target property to the constructor and the rendered template will be stored in the item using
Vale.
$converter = new TwigConverter($twig, 'layout', ['target' => 'content']); // The rendered template is added to the item with the key "content" $converter->convert(['name' => 'Florian']); // -> ['name' => 'Florian', 'content' => '...']
Not every time the full item should be passed as context, but rather an element of the item. You can pass the
context property to tell TwigConverter
which field in the item should be used as context.
$converter = new TwigConverter($twig, 'layout', ['context' => 'data']); // Only the ['name' => 'Florian'] is passed as context to Twig $converter->convert([['data' => ['name' => 'Florian'], 'file' => 'person']);
Whether the whole item or just part of it is used as context, Twig only allows arrays to be passed as context. Thus,
TwigConverter
checks if the context is an object and it will call its toArray()
method (if it has one).
Change Log
Version 0.1 (17 May 2015)
- Initial release
Author
Plum and PlumTwig have been developed by Florian Eckerstorfer (Twitter) in Vienna, Europe.
Plum is a project of Cocur. You can contact us on Twitter: @cocurco
License
The MIT license applies to plumphp/plum-twig. For the full copyright and license information, please view the LICENSE file distributed with this source code.