到目前为止,工作包现在需要在使用该包的项目中有自己的配置文件,以便单独管理包设置。
然而,无论我使用哪种方法(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
-文件?**我反复阅读文档,但老实说,每次我都感到更加困惑。
非常感谢你的任何帮助或解释!
1条答案
按热度按时间rseugnpd1#
这需要Symfony Flex
要自动生成/更新
.yaml
配置文件,有两种可能的方法:*公共捆绑包:在公共recipe repository中注册它
*私有捆绑包:设置你自己的私有flex recipe repository