liip / frctl-twig
用于处理 twig 中的 fractal @handle 的别名加载器以及伴随的节点模块的可调用处理器
Requires
- twig/twig: ^1.24
This package is auto-updated.
Last update: 2024-09-12 20:11:28 UTC
README
frctl-twig 是由一个 NPM 和一个 Composer 包组成的适配器。它将 Twig PHP 模板引擎集成到 fractal 中。
安装
在您的 fractal 项目中,通过添加 composer.json 来添加一个 composer 包。
{
"name": "my/fractal-project",
"type": "project",
"require-dev": {
"liip/frctl-twig": "dev-master"
},
}
运行 composer install
。
将 fractal twig 适配器的 devDependencies
添加到您的 package.json 中
"frctl-twig": "git+https://github.com/liip/frctl-twig.git#master"
运行 npm install
。
添加 Twig 扩展
将任何相关的 composer 包添加到您的 composer.json 中。
例如,运行 composer require twig/twig-extensions
。
然后添加一个名为 php-twig/TwigExtensions.php
的文件到您的 fractal 项目中,其内容如下
<?php
namespace Frctl;
class TwigExtensions
{
static public function getExtensions()
{
return [
# Add your extensions here, for example the twig-extension text extension
# new \Twig_Extensions_Extension_Text(),
];
}
}
然后添加以下部分到您的 fractal 项目 composer.json 中
"autoload": {
"psr-4": {
"Frctl\\": "php-twig/"
}
}
如何在其他项目中使用 Twig 模板
将指向您的 fractal 项目的 composer 包添加到该其他项目的 composer 项目中。
调整文件加载器以在 fractal 项目中找到 twig 模板
class TwigFilesystemLoader extends BaseTwigFilesystemLoader
{
/**
* Should probably be set via a setter from configuration
*
* @var string
*/
private $fractalPath = '/path/to/fractal/twig/templates';
/**
* @param string $name
*
* @return string
*/
protected function findTemplate($name)
{
$fractalPath = $this->getFractalPath();
if ($fractalPath && preg_match('/^@fractal-(.*)$/', $name, $templatePath)) {
$fullFilePath = $fractalPath . '/' . $templatePath[1];
return $fullFilePath;
}
...
}
}
将所有扩展加载到您的 Twig_Environment
实例中
if (class_exists('Frctl\TwigExtensions')) {
$extensions = \Frctl\TwigExtensions::getExtensions();
foreach ($extensions as $extension) {
$twig->addExtension($extension);
}
}
strict_variables
和 debug
配置标志
默认情况下,twig 的 strict_variables
标志设置为 false
,debug
标志设置为 true。要更改这些变量,请在配置 fractal 时传递一个可选的配置对象,并包含它们期望的值
const frctlTwig = require("frctl-twig");
fractal.components.engine(frctlTwig({
strict_variables: true, // Or false
debug: false // Or true
}));
// Further setup...
致谢
代码基于 Benjamin Milde 的工作