Symfony Bundle未在项目中创建捆绑包配置yaml文件

bvuwiixz  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(141)

到目前为止,工作包现在需要在使用该包的项目中有自己的配置文件,以便单独管理包设置。
然而,无论我使用哪种方法(Symfony 6.1之前的旧方法,还是扩展AbstractBundle的新方法),都不会在项目./config/packages/目录中创建任何新的.yaml-文件。
这是我的代码(旧样式,Symfony 6.1之前,扩展Bundle):

束类

  • mycorpforms/源代码/mycorpformsBundle.php*
<?php

namespace MyCorp\FormsBundle;

use Symfony\Component\Config\FileLocator;
use Symfony\Component\Config\Definition\Configurator\DefinitionConfigurator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class MyCorpFormsBundle extends Bundle
{
   // empty
}

配置

  • mycorpforms/源代码/依赖注入/配置.php*
<?php

namespace MyCorp\FormsBundle\DependencyInjection;

use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;

class Configuration implements ConfigurationInterface
{
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder('mycorp_forms');

        $treeBuilder->getRootNode()
            ->children()
                ->booleanNode('favorite_submenu_enabled')->defaultFalse()->end()
            ->end()
        ;

        return $treeBuilder;
    }
}

延伸导线

  • 我的公司表单/源代码/依赖注入/我的公司表单扩展.php*
<?php
namespace MyCorp\FormsBundle\DependencyInjection;

use Knp\Bundle\SnappyBundle\DependencyInjection\Configuration;
use Symfony\Component\Config\Definition\Processor;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;

class MyCorpFormsExtension extends Extension
{

    public function load(array $configs, ContainerBuilder $containerBuilder)
    {
        $loader = new YamlFileLoader(
            $containerBuilder,
            new FileLocator(__DIR__.'/../../config/packages')
        );
        $loader->load('mycorp_forms.yaml');

        $configuration = new Configuration();
        $processor = new Processor();
        $config = $processor->processConfiguration($configuration, $configs);

        $containerBuilder->setParameter('mycorp_forms.favorite_submenu_enabled', $config['favorite_submenu_enabled']);
    }
}

亚姆尔

此外,我在bundle ./config/packages/目录中添加了所需的mycorp_forms.yaml

这是项目中需要的实际文件:

  • mycorpforms/配置/包/mycorp_表单.yaml*
mycorp_forms:
    # Enable Favorite-Sub-Menu (Requires Knp-Snappy-Bundle !)
    favorite_submenu_enabled: false

这个包可以完美地安装在我的任何项目中,但是没有创建mycorp_forms.yaml文件。显然,这需要symfony/flex,这是到目前为止包本身所需要的。

问:我错过了什么?
**问:如何在安装bundle时自动添加这个yaml-文件?**我反复阅读文档,但老实说,每次我都感到更加困惑。

非常感谢你的任何帮助或解释!

rseugnpd

rseugnpd1#

这需要Symfony Flex
要自动生成/更新.yaml配置文件,有两种可能的方法:

*公共捆绑包:在公共recipe repository中注册它
*私有捆绑包:设置你自己的私有flex recipe repository

相关问题