encoredigitalgroup / dynamicdata
Laravel 动态数据字段
Requires
- php: ^8.2
- laravel/framework: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.14
Requires (Dev)
- brainmaestro/composer-git-hooks: ^3.0@alpha
- neronmoon/scriptsdev: 0.1.9
- orchestra/testbench: ^8.17
- pestphp/pest: ^2.28
- pestphp/pest-plugin-laravel: ^2.2
- tightenco/duster: ^2.6
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.shall
为true
时,encrypted.is
为true
。但是,如果此字段从未设置过值,则encrypted.is
将设置为false
。
encrypted.shall
键用于确定字段值是否应该被加密。如果encrypted.shall
为true
,那么当动态数据正在编码时,此包将使用您的Laravel APP_KEY
来加密此字段。