plumphp / plum-twig
PlumTwig 是用于 Plum 的 Twig 转换器。
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-09-20 09:06:21 UTC
README
PlumTwig 是 Twig 的转换器,用于 Plum。Plum 是 PHP 的数据处理管道。
由欧洲维也纳的 Florian Eckerstorfer 开发。
安装
您可以使用 Composer 安装 PlumTwig。
$ composer require plumphp/plum-twig
用法
有关 Plum 的一般信息,请参阅 Plum 文档。
TwigConverter
在其最简单的形式中,Plum\PlumTwig\TwigConverter
接收一个项目并返回一个渲染的模板。给定的项目作为上下文传递给 Twigs 的 render()
方法。以下代码渲染了 hello.html.twig
模板,并将 ["name" => "Florian"]
作为上下文传递给模板。convert()
的返回值是渲染的模板。
use Plum\PlumTwig\TwigConverter; $converter = new TwigConverter($twig, 'hello'); $converter->convert(['name' => 'Florian']);
默认情况下,将在给定的模板名称后附加 .html.twig
。您可以通过调用 setFileExtension()
来更改文件扩展名。
$converter->setFileExtension('.twig');
有时应该使用不同的模板来渲染不同的项目。如果您将模板属性传递给构造函数,则从给定的项目检索模板名称。由于 TwigConverter
使用 Vale 来检索值,因此即使项目是复杂和嵌套的结构,这也可以工作。
$converter = new TwigConverter($twig, 'default', ['template' => 'layout']); // The template name.html.twig is used to render the item $converter->convert(['name' => 'Florian', 'layout' => 'name']);
我们已经看到默认情况下,TwigConverter
接收任意项目(例如,数组或对象)并将其转换为字符串。在许多情况下,转换器将是更大 Plum 工作流的一部分,并且您希望保留项目中的数据。您可以将目标属性传递给构造函数,并将渲染的模板使用 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' => '...']
并不是每次都需要传递整个项目作为上下文,而是项目的一个元素。您可以通过传递上下文属性来告诉 TwigConverter
项目的哪个字段应用作上下文。
$converter = new TwigConverter($twig, 'layout', ['context' => 'data']); // Only the ['name' => 'Florian'] is passed as context to Twig $converter->convert([['data' => ['name' => 'Florian'], 'file' => 'person']);
无论整个项目还是其部分用作上下文,Twig 只允许传递数组作为上下文。因此,TwigConverter
检查上下文是否是对象,并且如果它有,它将调用其 toArray()
方法。
变更日志
版本 0.1 (2015 年 5 月 17 日)
- 首次发布
作者
Plum 和 PlumTwig 已由欧洲维也纳的 Florian Eckerstorfer (Twitter) 开发。
许可
MIT 许可证适用于 plumphp/plum-twig。有关完整的版权和许可信息,请参阅与源代码一起分发的 LICENSE 文件。