edalzell/forma

为您的插件配置提供控制面板访问权限

安装数: 31,963

依赖关系: 8

建议者: 0

安全: 0

星级: 9

关注者: 2

分支: 4

开放性问题: 2

类型:statamic-addon

v3.0.1 2024-05-28 19:44 UTC

README

Latest Version

此软件包为用户提供了一种轻松配置插件的方式。

要求

  • PHP 8.2+
  • Laravel 10.0+
  • Statamic 4.0+

安装

您可以通过Composer使用以下命令安装此软件包:

composer require edalzell/forma

该软件包将自动注册自己。

使用方法

首先,在resources\blueprints中创建一个config.yaml文件,其中包含您的配置蓝图。例如,请参阅Mailchimp的示例

然后,在您的插件的Service Provider的boot方法中添加以下内容:

\Edalzell\Forma\Forma::add('silentz/mailchimp', ConfigController::class);

第二个参数是可选的,仅在您需要自定义配置处理时才需要(请参阅下面的扩展部分)

完成这些后,您将在cp中获得一个用户可以访问和使用的项目菜单项。所有数据都保存在config文件夹中的addon_handle.php文件中。

menu item

权限

存在一个必须启用的Manage Addon Settings权限,以允许用户更新任何已启用Forma的插件的设置。

扩展

如果您的插件需要在加载和保存之前/之后修改配置,请创建自己的控制器,使其继承自\Edalzell\Forma\ConfigController,并使用preProcesspostProcess方法。

例如,Mailchimp插件以如下方式存储配置

'user' => [
    'check_consent' => true,
    'consent_field' => 'permission',
    'merge_fields' => [
        [
            'field_name' => 'first_name',
        ],
    ],
    'disable_opt_in' => true,
    'interests_field' => 'interests',
],

但是没有支持该配置的蓝图,因此它使用一个网格,它期望数据看起来像这样

'user' => [
    [
        'check_consent' => true,
        'consent_field' => 'permission',
        'merge_fields' => [
            [
                'field_name' => 'first_name',
            ],
        ],
        'disable_opt_in' => true,
        'interests_field' => 'interests',
    ]
],

因此,在其ConfigController

protected function postProcess(array $values): array
{
    $userConfig = Arr::get($values, 'user');

    return array_merge(
        $values,
        ['user' => $userConfig[0]]
    );
}

protected function preProcess(string $handle): array
{
    $config = config($handle);

    return array_merge(
        $config,
        ['user' => [Arr::get($config, 'user', [])]]
    );
}

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献以获取详细信息。

安全

如果您发现任何与安全相关的问题,请通过addon-security@silentz.co发送电子邮件,而不是使用问题跟踪器。

许可证

MIT许可证