edalzell / forma
为您的插件配置提供控制面板访问权限
v3.0.1
2024-05-28 19:44 UTC
Requires
- php: ^8.0
- laravel/framework: ^10.0 || ^11.0
- statamic/cms: ^4.0 || ^5.0
- stillat/proteus: ^4.0
Requires (Dev)
- mockery/mockery: ^1.3.1
- nunomaduro/collision: ^7.0 || ^8.0
- orchestra/testbench: ^8.0 || ^9.0
- phpunit/phpunit: ^10.0 || ^11.0
This package is auto-updated.
Last update: 2024-08-28 20:07:33 UTC
README
此软件包为用户提供了一种轻松配置插件的方式。
要求
- 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
文件中。
权限
存在一个必须启用的Manage Addon Settings
权限,以允许用户更新任何已启用Forma的插件的设置。
扩展
如果您的插件需要在加载和保存之前/之后修改配置,请创建自己的控制器,使其继承自\Edalzell\Forma\ConfigController
,并使用preProcess
和postProcess
方法。
例如,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许可证