monsieurbiz/sylius-settings-plugin

为您的Sylius添加设置面板。

安装次数: 111 483

依赖者: 8

建议者: 0

安全: 0

星标: 23

关注者: 8

分支: 18

开放问题: 0

类型:sylius-plugin

v1.2.1 2024-08-30 08:06 UTC

README

Banner of Sylius Settings plugin

Sylius设置

Settings Plugin license Tests Status Recipe Status Security Status

此插件为您提供了在您喜欢的电子商务平台Sylius中拥有插件化设置的权限。

Screenshot of the admin panel in Settings section

兼容性

安装

如果您想使用我们的食谱,可以通过运行以下命令来配置您的composer.json:

composer config --no-plugins --json extra.symfony.endpoint '["https://api.github.com/repos/monsieurbiz/symfony-recipes/contents/index.json?ref=flex/master","flex://defaults"]'
composer require monsieurbiz/sylius-settings-plugin
⚠️ 警告:对于Doctrine DBAL < 3.0

如果您使用的是Doctrine DBAL < 3.0,则必须忽略迁移Version20240710130300.php

console doctrine:migrations:version 'MonsieurBiz\SyliusSettingsPlugin\Migrations\Version20240710130300' --add

如果您不使用flex进行安装,请按照以下额外步骤操作:

将您的config/bundles.php文件更改为添加以下行以声明插件:

<?php

return [
    //..
    MonsieurBiz\SyliusSettingsPlugin\MonsieurBizSyliusSettingsPlugin::class => ['all' => true],
];  

然后在config/packages/monsieurbiz_settings_plugin.yaml中创建配置文件

imports:
    - { resource: "@MonsieurBizSyliusSettingsPlugin/Resources/config/config.yaml" }

最后在config/routes/monsieurbiz_settings_plugin.yaml中导入路由

monsieurbiz_sylius_settings_admin:
    resource: "@MonsieurBizSyliusSettingsPlugin/Resources/config/routes/admin.yaml"
    prefix: /%sylius_admin.path_name%

更新您的数据库

bin/console doctrine:migration:migrate

继续到 "工作原理",为您的商店添加第一个设置。

注意:如果您让composer运行脚本,在安装过程中可能会遇到错误。
复制配置文件并重新运行composer require,它应该会工作。这是由于DI中使用了其他插件。然后必须运行任何控制台命令。

工作原理

作为一个良好的开始,您可以查看以下内容:

然后您可以使用twig函数setting()来获取您的设置。
请查看此示例

您也可以使用DI来获取您的设置,例如在测试应用程序的设置app.default中。

$ ./bin/console debug:container | grep app.settings.default
  MonsieurBiz\SyliusSettingsPlugin\Settings\Settings $defaultSettings                    alias for "app.settings.default"
  MonsieurBiz\SyliusSettingsPlugin\Settings\SettingsInterface $defaultSettings           alias for "app.settings.default"
  app.settings.default                                                                   MonsieurBiz\SyliusSettingsPlugin\Settings\Settings

注意:只有当您至少有一个设置时,“设置”菜单才会显示。

获取设置

use MonsieurBiz\SyliusSettingsPlugin\Provider\SettingsProviderInterface;
//...

    private SettingsProviderInterface $settingsProvider;

    public function __construct(SettingsProviderInterface $settingsProvider)
    {
            $this->settingsProvider = $settingsProvider;
    }
    
    public function myAwesomeMethod()
    {
        return $this->settingsProvider->getSettingValue('app.default', 'demo_message')
    }

使用固定数据

我们已经实现了一个固定数据加载器,以帮助您在需要为测试或项目(按渠道、按区域等)具有不同设置的情况下创建设置。

您需要创建一个yaml文件来存储您的固定数据,如Sylius文档中所述。
您可以在源代码中的sylius_fixtures部分找到我们的示例配置文件

在开发中,您还可以运行本地套件的测试固定数据:make sylius.fixtures.local

默认情况下,固定数据将替换设置的值,如果该值已存在。如果您想在运行此固定数据时保留数据库中的值,您可以为要保留的每个元素使用ignore_if_exists: true标志。

扩展现有的设置表单

如果您想向现有的设置表单添加字段(例如在另一个插件中),您可以查看测试应用程序中的示例

使用CLI

您可以使用CLI命令直接从控制台设置设置值:$ ./bin/console monsieurbiz:settings:set {别名} {路径} {值} --channel="FASHION_WEB" --locale="en_US" --type="text"

示例

$ ./bin/console monsieurbiz:settings:set app.default demo_message 'fashion message' --channel="FASHION_WEB" --locale="en_US"
$ ./bin/console monsieurbiz:settings:set app.default demo_json '{"foo":"baz"}' --channel="FASHION_WEB" --locale="en_US" --type="json"
$ ./bin/console monsieurbiz:settings:set app.default demo_datetime '2023-07-24 01:02:03' --channel="FASHION_WEB" --locale="en_US" --type="datetime"
$ ./bin/console monsieurbiz:settings:set app.default enabled 0

如果您想设置全局范围内的值,可以省略channel和locale选项。如果给定范围内已存在值,则可以省略type,因为它将与现有值相同,除非您想更改类型。对于新值,您需要指定类型。

⚠️ 指定类型时,请确保您知道自己在做什么,因为它应与字段的表单类型一致。

使用缓存

设置默认使用cache.adapter.array适配器。如果您想提高性能,可以使用cache.adapter.apcucache.adapter.redis或任何其他适配器。

您需要将以下行添加到您的配置文件中

monsieurbiz_sylius_settings:
    cache_adapter: cache.adapter.apcu

贡献

您可以在DEVELOPMENT.md文件中找到运行插件的方法,无需费力:DEVELOPMENT.md

然后,如果您想,可以开启一个问题或拉取请求!😘
谢谢!

许可协议

此插件完全免费,并按照MIT许可协议发布。