encoredigitalgroup/dynamicdata

Laravel 动态数据字段

v1.0.0 2024-03-13 16:38 UTC

This package is auto-updated.

Last update: 2024-09-17 02:57:26 UTC


README

本包旨在允许您创建可用于代码中的动态数据对象。这在您需要以标准但仍然灵活的结构存储用户定义信息时非常有用。

安装

composer require encoredigitalgroup/dynamicdata

创建新的动态数据对象

让我们为某人的最爱电视剧创建一个动态数据对象

<?php

use EncoreDigitalGroup\DynamicData\Helpers\DynamicData

$ddo = new DynamicData()

$ddo->setName('your_custom_field');
$ddo->setType('string');
$ddo->setLabel('Favorite TV Show');
$ddo->setValue('Suits');
$ddo->setExternal();
$ddo->setRequired(false);
$ddo->setShallEncrypt(false);

//Build the Object as an Array
$ddo->buildAsArray();
//or
$ddo->build(); //build() is a wrapper for buildAsArray()

//Build the Object as a JSON String
$ddo->buildAsJson() //buildAsJson() is a wrapper for buildAsArray() that also runs json_encode() prior to returning the encoding JSON String

在上面的示例中,我们没有使用每个方法来设置每个字段,例如setIsEncrypted,因为setIsEncrypted的默认值是false。我们还指示DynamicData不要加密提供给setValue的值。正如您所期望的,当调用任何build方法时,未在DynamicData()对象上定义的任何可选字段都将设置为null

字段信息

动态数据 JSON 结构

以下是一个动态数据字段的示例

{
  "your_custom_field": {
    "name": "your_custom_field",
    "type": null,
    "label": "Favorite TV Show",
    "value": "Suits",
    "source": {
      "name": null,
      "scope": null
    },
    "external": true,
    "required": false,
    "encrypted": {
      "is": false,
      "shall": false
    }
  }
}

your_custom_field键是字段的名称。这用于在您的代码中快速识别字段,而不是需要遍历每个项来检查字段的名称。

your_custom_field内部的name键应与它所在的键中的键值相同。这用于在您需要时,可以轻松地在您的代码中使用此字段名称。

type键用于标识此字段的数据类型。Encore Digital Group使用此字段来决定渲染此字段时应使用哪个blade组件。

label键用于在用户编辑此字段时向用户显示标签。

source.name键用于标识此字段的数据所在位置。Encore Digital Group使用此字段来决定使用哪个第三方API来检索此字段的数据。

source.scope键用于标识应用于数据源的作用域。例如,如果您需要向数据源添加额外的逻辑以检索数据,您可以使用此字段来标识在您的代码中应用哪个作用域。

external键用于确定是否应向用户显示此字段。

required键用于确定用户是否必须为此字段提供值。

encrypted.is键用于确定字段值是否当前已加密。很可能会在encrypted.shalltrue时,encrypted.istrue。但是,如果此字段从未设置过值,则encrypted.is将设置为false

encrypted.shall键用于确定字段值是否应该被加密。如果encrypted.shalltrue,那么当动态数据正在编码时,此包将使用您的Laravel APP_KEY来加密此字段。