PlumTwig is a Twig converter for Plum.
PlumTwig is a Twig converter for Plum. Plum is a data processing pipeline for PHP.
Developed by Florian Eckerstorfer in Vienna, Europe.
You can install PlumTwig using Composer.
$ composer require plumphp/plum-twig
Please refer to the Plum documentation for more information about Plum in general.
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']);
.html.twig is appended on the given template name. You can change the file extension by calling
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
Vale to retrieve the value this works even if the item is a complex and nested
$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
$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).
- Initial release
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.