承接 dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields

Composer 安装命令:

composer require dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields

包简介

Widget for plugin ManagerManager that allows you to add any number of fields values (TV) in one document (values are written in field as a JSON object). For example: a few images.

README 文档

README

Widget for plugin ManagerManager that allows you to add any number of fields values (TV) in one document (values are written in field as a JSON object). For example: a few images.

Capabilities:

  • Save several images, text fields, selects, etc to a document field.
  • Create several columns with different (or identical) data types. For example: images with titles ($params->columns).
  • Number of rows may be fixed, dynamic or may lay in the special range ($params->minRowsNumber, $params->maxRowsNumber).
  • Rows sorting by drag and drop.
  • Generating of an unique ID for each row.
  • List of predefined values for a column ($params->columns[i]['type'] == 'select').

Requires

Installation

To install you must unzip the archive to /assets/plungins/managermanager/widgets/ddmultiplefields/.

You may also read this documentation:

Type of TV must be textarea.

Parameters description

  • $params

    • Desctription: Parameters, the pass-by-name style is used.
    • Valid values:
      • stdClass
      • arrayAssociative
    • Required
  • $params->fields

    • Desctription: Names of TV for which the widget is applying.
    • Valid values: stringCommaSeparated
    • Required
  • $params->columns

    • Desctription: Columns.
    • Valid values: array
    • Default value: [ ['type' => 'text'] ]
  • $params->columns[i]

    • Desctription: Column.
    • Valid values: arrayAssociative
    • Required
  • $params->columns[i]['type']

    • Desctription: Column type.
    • Valid values:
      • 'text'<input type="text"> column
      • 'textarea' — <textarea> column
      • 'richtext' — column with rich text editor
      • 'image' — image column
      • 'file' — file column
      • 'date' — date column
      • 'select'<select> column (see $params->columns[i]['data'])
    • Required
  • $params->columns[i]['title']

    • Desctription: Column title.
    • Valid values: string
    • Default value: ''
  • $params->columns[i]['alias']

    • Desctription: An unique column alias. If empty, just numeric index will be used.
    • Valid values: string
    • Default value: —
  • $params->columns[i]['width']

    • Desctription: Column width, px.
    • Valid values: integer
    • Default value: 180
  • $params->columns[i]['data']

    • Desctription: Valid values (for the 'select' column type)
    • Valid values: stringJsonArray
    • Default value: —
  • $params->columns[i]['data'][i]

    • Desctription: Item.
    • Valid values: arrayAssociative
    • Required
  • $params->columns[i]['data'][i]['value']

    • Desctription: Item value.
    • Valid values: string
    • Required
  • $params->columns[i]['data'][i]['title']

    • Desctription: Item title.
    • Valid values: string
    • Default value: == $params->columns[i]['data'][i]['value']
  • $params->columns[i]['defaultValue']

    • Desctription: Column default value.
      For now it is used only to check when deleting empty rows.
    • Valid values: string
    • Default value: ''
  • $params->minRowsNumber

    • Desctription: Minimum number of rows.
    • Valid values: integer
    • Default value: 0
  • $params->maxRowsNumber

    • Desctription: Maximum number of rows.
    • Valid values:
      • integer
      • 0 — unlimited
    • Default value: 0
  • $params->previewWidth

    • Desctription: Maximum value of image preview width (for the 'image' columns).
    • Valid values: integer
    • Default value: 300
  • $params->previewHeight

    • Desctription: Maximum value of image preview height (for the 'image' columns).
    • Valid values: integer
    • Default value: 100
  • $params->roles

    • Desctription: The CMS user roles that the widget is applied to.
    • Valid values:
      • stringCommaSeparated
      • '' — when this parameter is empty then widget is applied to the all roles
    • Default value: ''
  • $params->roles[i]

    • Desctription: CMS user role.
    • Valid values: integer
    • Required
  • $params->templates

    • Desctription: Document templates IDs for which the widget is applying to.
    • Valid values:
      • stringCommaSeparated
      • '' — empty value means the widget is applying to all templates
    • Default value: ''
  • $params->templates[i]

    • Desctription: Templates ID.
    • Valid values: integer
    • Required

CMS events

  • OnDocFormPrerender
  • OnDocFormRender

Output format

The widget saves value to a TV as JSON object with the following structure:

{
	"1590412453247": {
		"0": "First row, first column value",
		"customAlias": "First row, second column value"
	},
	"1590412497589": {
		"0": "Second row, first column value",
		"customAlias": "Second row, Second column value"
	}
}

Where:

  • 1590412453247, 1590412497589 — the unique auto generated row IDs (JS (new Date).getTime() is used while creating rows).
  • 0, customAlias — column index or alias (if set).

Rows objects with empty column values will not be saved. If all columns and all rows are empty, an empty string ('') will be saved instead of an empty JSON ojbect ('{}').

It is strongly recommend to use (MODX)EvolutionCMS.snippets.ddGetMultipleField >= 3.5 for rendering TVs on site.

Examples

Make the TV someImages available for adding several number of images

Create the TV someImages, set it's type equal to textarea.

mm_ddMultipleFields([
	'fields' => 'someImages',
	'columns' => [
		//Only one column
		[
			'type' => 'image'
		]
	]
]);

Create 2 columns: images with titles

mm_ddMultipleFields([
	'fields' => 'someImage',
	'columns' => [
		[
			'type' => 'image',
			'title' => 'Photo'
		],
		[
			'type' => 'text',
			'title' => 'Title'
		]
	]
]);

Using column aliases ($params->columns[i]['alias'])

mm_ddMultipleFields([
	'fields' => 'photos',
	'columns' => [
		[
			'type' => 'image',
			'title' => 'Photo',
			'alias' => 'src'
		],
		[
			'type' => 'text',
			'title' => 'Title'
			'alias' => 'alt'
		],
		//In the same time we can use columns without aliases, numeric index will be used in this case
		[
			'type' => 'textarea'
			'title' => 'Notes'
		]
	]
]);

Will be save something like this:

{
	"1590412453247": {
		"src": "assets/images/ElonMusk.jpg",
		"alt": "Elon Reeve Musk",
		"2": "Business magnate and investor"
	},
	"1590412497589": {
		"src": "assets/images/YuryDud.jpg",
		"alt": "Yury Aleksandrovich Dud",
		"2": "Russian journalist and YouTuber"
	}
}

Table of employees contacts

Create the TV employees, set it's type equal to textarea.

mm_ddMultipleFields([
	'fields' => 'employees',
	'columns' => [
		[
			'type' => 'text',
			'title' => 'Name',
			'width' => 250
		],
		[
			'type' => 'text',
			'title' => 'Phone'
			'width' => 100
		],
		[
			'type' => 'text',
			'title' => 'Job title'
			'width' => 200
		]
	],
	//Minimum 2 employee is required
	'minRowsNumber' => 2,
	//And maximum 10
	'maxRowsNumber' => 10
]);

<select> column type

mm_ddMultipleFields([
	'fields' => 'employees',
	'columns' => [
		[
			'type' => 'text',
			'title' => 'Name',
			'width' => 250
		],
		[
			'type' => 'text',
			'title' => 'Phone'
			'width' => 100
		],
		[
			'type' => 'select',
			'title' => 'Job title'
			'data' => '[
				{
					"value": "Founder"
				},
				{
					"value": "SEO"
				},
				{
					"value": "Designer"
				},
				{
					"value": "Product manager"
				},
				{
					"value": "Developer"
				}
			]'
		]
	]
]);

Links

dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields 适用场景与选型建议

dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields 是一款 基于 JavaScript 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 12 月 19 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「multiple field」 「modx」 「MODX Evo」 「evo」 「modx evolution」 「evo cms」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields 我们能提供哪些服务?
定制开发 / 二次开发

基于 dd/evolutioncms-plugins-managermanager-mm_ddmultiplefields 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 4
  • 开发语言: JavaScript

其他信息

  • 授权协议: Unknown
  • 更新时间: 2020-12-19