symfony 4配置默认值(无文件)

时间:2019-12-03 00:17:53

标签: symfony configuration

我正在尝试为我的捆绑包创建默认配置。我创建了包,包扩展和配置类。在配置类内部,我定义了几个具有默认值的键。没有创建Yaml文件。当我尝试转储配置时,出现错误:

  

“别名为“ foxtrot_alpha_users”的扩展名没有配置。”

但是,如果我创建匹配的yaml文件,并定义至少一个键,则另一个键采用配置类中所述的默认值,则可以覆盖该值。

是否可以定义一个完全没有Yaml文件的默认配置?

捆绑类:

class UsersBundle extends Bundle
{
    /**
     * this is to have a custom alias
     *
     * @return void
     */
    public function getContainerExtension()
    {
        return( new UsersExtension() );
    }
}

扩展类:

class UsersExtension extends Extension 
{
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();

        $config = $this->processConfiguration($configuration, $configs);

        foreach($config as $key => $value) 
        {
            $parameterKey = $this->getAlias().'.'.$key;
            $container->setParameter($parameterKey, $value);
        }        

        $container->setParameter('default_password', $config['default_password']);
    }    

    /**
     * customized alias
     *
     * @return string
     */
    public function getAlias()
    {
        return('foxtrot_alpha_users');
    }

配置类:

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

        $rootNode = $treeBuilder->getRootNode();

        $this->addUserParameters( $rootNode );

        return $treeBuilder;
    }    

    private function addUserParameters( ArrayNodeDefinition $rootNode )
    {
        $rootNode
            ->addDefaultsIfNotSet()
            ->children()
                ->scalarNode('default_password')
                    ->defaultValue('248')
                ->end()
                ->scalarNode('x')
                    ->defaultValue('1')
                ->end()
            ->end()
        ;

        return( $rootNode );
    }

0 个答案:

没有答案