Anyon e634118a22 refactor(plugin): 迁移 v8 插件化组件体系
将 v6 中直接放在本地 app 的后台与微信能力迁移为 v8 插件组件,并把运行时基础能力沉淀到独立插件包。

主要内容:

- 新增 think-library、system、worker、static、install 等基础插件包。

- 新增 account、payment、wechat-client、wechat-service、wemall、wuma 等业务插件包。

- 移除 v6 的 app/admin 与 app/wechat 本地应用实现,改由插件分发接管。

- 将 Helper 能力彻底并入 System,统一为 plugin\system\helper\* 命名空间。

- 同步插件迁移发布清单与根 route 占位,保证安装发布流程可复现。
2026-05-08 15:30:46 +08:00

88 lines
2.5 KiB
PHP

<?php
declare(strict_types=1);
namespace think\admin\builder\form\module;
use think\admin\builder\form\FormComponents;
use think\admin\builder\form\FormNode;
/**
* 表单通用模块。
* @class FormModules
*/
class FormModules
{
/**
* @param array<string, mixed> $config
*/
public static function intro(FormNode $parent, array $config = []): FormNode
{
return FormComponents::intro()->config($config)->mount($parent);
}
/**
* @param array<string, mixed> $config
* @param callable(FormNode): void $callback
*/
public static function section(FormNode $parent, array $config, callable $callback): FormNode
{
return FormComponents::section()->config($config)->body($callback)->mount($parent);
}
public static function note(FormNode $parent, string $text, string $class = 'help-block color-desc'): FormNode
{
return FormComponents::note($text)->class($class)->mount($parent);
}
/**
* @param array<string, mixed> $config
*/
public static function readonlyField(FormNode $parent, array $config = []): FormNode
{
return FormComponents::readonlyField()->config($config)->mount($parent);
}
/**
* @param array<string, mixed> $config
*/
public static function pickerField(FormNode $parent, array $config = []): FormNode
{
return FormComponents::pickerField()->config($config)->mount($parent);
}
/**
* @param array<string, array<string, mixed>> $themes
* @param array<string, mixed> $config
*/
public static function themePalette(FormNode $parent, array $themes, string $current = '', array $config = []): FormNode
{
return FormComponents::themePalette($themes, $current)->config($config)->mount($parent);
}
/**
* @param array<string, mixed> $theme
*/
private static function themePreviewStyle(array $theme): string
{
$styles = [];
foreach ([
'theme-accent' => strval($theme['primary'] ?? ''),
'theme-header' => strval($theme['header'] ?? ''),
'theme-side' => strval($theme['side'] ?? ''),
'theme-surface' => strval($theme['surface'] ?? ''),
'theme-body' => strval($theme['body'] ?? ''),
] as $name => $value) {
if ($value !== '') {
$styles[] = '--' . $name . ':' . $value;
}
}
return join(';', $styles);
}
private static function escape(string $content): string
{
return htmlentities($content, ENT_QUOTES, 'UTF-8');
}
}