liip/frctl-twig

用于处理 twig 中的 fractal @handle 的别名加载器以及伴随的节点模块的可调用处理器

v1.0.0 2018-08-03 14:53 UTC

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_variablesdebug 配置标志

默认情况下,twig 的 strict_variables 标志设置为 falsedebug 标志设置为 true。要更改这些变量,请在配置 fractal 时传递一个可选的配置对象,并包含它们期望的值

    const frctlTwig = require("frctl-twig");
    
    fractal.components.engine(frctlTwig({
        strict_variables: true, // Or false
        debug: false // Or true
    }));
    
    // Further setup...

致谢

代码基于 Benjamin Milde 的工作