aleksip/plugin-data-transform

Pattern Lab PHP 的数据转换插件

安装数: 847,520

依赖关系: 3

建议者: 0

安全: 0

星标: 34

关注者: 5

分支: 10

开放问题: 5

类型:patternlab-plugin

v1.4.0 2019-09-15 08:44 UTC

This package is auto-updated.

Last update: 2024-09-17 00:26:01 UTC


README

安装

要在 Pattern Lab 根目录中安装和使用该插件,请运行以下命令

composer require aleksip/plugin-data-transform

配置选项

为了使 Attribute 对象支持正常工作,您的 Pattern Lab config.yml 文件需要以下设置

twigAutoescape: false

config.yml 中 Data Transform 插件特定选项的默认值如下

plugins:
    dataTransform:
        enabled: true
        verbose: false

启用和禁用插件

安装后,可以使用 enabled 设置启用和禁用 Data Transform 插件。

详细模式

有时在生成 Pattern Lab 时可能会出现数据文件问题,此时会显示带有长堆栈跟踪的 PHP 警告和/或通知。在一个大项目中,很难找到有问题的数据文件,但通过启用 Data Transform 插件的详细模式(使用 verbose 设置)可以帮助解决这个问题。

在详细模式下,Data Transform 插件会报告每个处理的模式以及所有数据转换函数。它还会抑制常规 PHP 错误消息,并以更易读的方式报告错误。

重要提示:由于详细模式的实现方式,如果使用了其他与 Twig Environment 对象交互的插件,它可能无法正常工作。

特性

支持包含模式的特定数据文件

Pattern Lab 核心仅支持全局数据文件和主模式的特定数据文件。此插件为包含模式添加了特定数据文件支持。此功能与该插件提供的所有 PatternEngines 中的包含函数一起工作,也与使用 Twig PatternEngine 的模板文件中的常规包含一起工作。

请注意,从 _data 目录中的全局数据被视为特定模式的数据,并将覆盖从父模式继承的数据。如果您想覆盖包含模式的数据库,可以使用 with 关键字。

数据转换函数

目前该插件为 Pattern Lab 读取的数据提供了四个转换函数。提供的示例是 JSON 格式,但 Pattern Lab 也支持 YAML。

包含模式文件

如果值包含简写部分语法中的模式名称,该插件会将值替换为渲染的模式

{
    "key": "atoms-form-element-label-html"
}

支持传递变量(with)和禁用对默认数据的访问(only)的高级语法

{
    "key": {
        "include()": {
            "pattern": "atoms-form-element-label-html",
            "with": {
                "title": "Textfield label"
            },
            "only": true
        }
    }
}

在两个示例中,key 的值将替换为渲染的模式。

有关 withonly 的更多信息,请参阅 Twig include 文档

包含伪模式文件

您还可以使用简写部分语法通过替换波浪号(~)为破折号(-)来包含 伪模式。例如,伪模式 shila-card.html~variant.json 可以这样包含:

{
    "key": "molecules-shila-card-html-variant"
}

连接文本值

{
    "key": {
        "join()": [
            "molecules-comment-html",
            "<div class=\"indented\">",
            "molecules-comment-html",
            "</div>",
            "molecules-comment-html"
        ]
    }
}

键值key将被替换为拼接的字符串。注意,在示例中molecules-comment-html是简短部分语法中模式的名字。这些将在拼接之前被替换为渲染后的模式。

创建Drupal Attribute对象

{
    "key": {
        "Attribute()": {
            "id": ["edit-submit"],
            "type": ["submit"],
            "value": ["Submit"],
            "class": ["button", "button-primary"]
        }
    }
}

键值key将被替换为一个Attribute对象

创建Drupal Url对象

{
    "key": {
        "Url()": {
            "url": "http://example.com",
            "options": {
                "attributes": {
                    "Attribute()": {
                        "class": ["link"]
                    }
                }
            }
        }
    }
}

键值key将被替换为一个Url对象。注意,在示例中,在创建Url对象之前,attributes的值将被替换为一个Attribute对象。