如何解决尝试在 OroPlatform 上注册自定义配置时出错
当我尝试在 Oro 平台 v.4.1.10 上添加自定义全局配置时遇到问题。
当我将它放在“ui_only”上时,我的配置已在管理面板中很好地注册,但当我尝试定义它时,它没有将值保存在数据库中。而且我没有实现在其上设置默认值。
当我删除“ui_only”时,出现此错误:
我使用以下 src/Baltimore/Bundle/AppBundle/Resources/config/oro/system_configuration.yml
system_configuration:
groups:
baltimore_settings:
title: app.configuration.baltimore.label
icon: 'fa-building'
guarantee_pack_settings:
title: app.configuration.guarantee_pack.label
fields:
app_guarantee_pack.honorary_vat_rate:
data_type: string
type: Symfony\Component\Form\Extension\Core\Type\TextType
# ui_only: true
options:
label: app.configuration.guarantee_pack.honorary_vat_rate.label
tree:
system_configuration:
platform:
children:
general_setup:
children:
baltimore_settings:
priority: 10000
children:
guarantee_pack_settings:
children:
- app_guarantee_pack.honorary_vat_rate
我已经创建了一个 src/Baltimore/Bundle/AppBundle/DependencyInjection/Configuration.php
文件,但似乎没有考虑到
<?php
namespace Baltimore\Bundle\AppBundle\DependencyInjection;
use Oro\Bundle\ConfigBundle\DependencyInjection\SettingsBuilder;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
/**
* Class Configuration
* @package Baltimore\Bundle\AppBundle\DependencyInjection
*/
class Configuration implements ConfigurationInterface
{
/**
* @return TreeBuilder
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('app_guarantee_pack');
// $root->children()->scalarNode('honorary_vat_rate')->defaultValue(1.2)->end();
SettingsBuilder::append($rootNode,[
'honorary_vat_rate' => [
'value' => 'test',]
]);
return $treeBuilder;
}
}
我的包是按以下方式定义的,所以我不明白为什么 DependencyInjection
文件夹中的配置文件没有被应用。
# src/Baltimore/Bundle/AppBundle/Resources/config/oro/bundles.yml
bundles:
- Baltimore\Bundle\AppBundle\BaltimoreAppBundle
我遵循以下文档以尝试实施我的自定义设置:
- https://doc.oroinc.com/backend/system-configuration/
- https://github.com/oroinc/platform/blob/4.2/src/Oro/Bundle/ConfigBundle/Resources/doc/config_management.md
感谢您的帮助。
解决方法
我已经创建了一个 src/Baltimore/Bundle/AppBundle/DependencyInjection/Configuration.php 文件,但它似乎没有被考虑
如果您没有使用依赖注入扩展显式加载它,则不会:
// src/Acme/SocialBundle/DependencyInjection/AcmeSocialExtension.php
public function load(array $configs,ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration,$configs);
// you now have these 2 config keys
// $config['twitter']['client_id'] and $config['twitter']['client_secret']
}
https://symfony.com/doc/4.4/bundles/configuration.html#processing-the-configs-array
看来必须在此主题上扩展 Oro 文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。