我正在尝试为我的捆绑包创建默认配置。我创建了包,包扩展和配置类。在配置类内部,我定义了几个具有默认值的键。没有创建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 );
}