構成ファイルから構成できるようにしたいサービスを構築しました。必要に応じて機能させることができましたが、他のバンドルを見ると、使用しなければならなかったのと同じ構成設定が表示されません。ハックのような気がします。必要なのは、構成値をオプションとして持つことです。つまり、config.yml ファイルにない場合は、デフォルト値を使用します。Configuration.php バンドル ファイルに以下を追加して、これを実現しました。
namespace ChrisJohnson00\ApiProfilerBundle\DependencyInjection;
...
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('chris_johnson00_api_profiler');
$rootNode
->children()
->scalarNode('warning_threshold')
->info('Changes the warning threshold time (ms). This is used to change the toolbar to yellow when the total response time is > this value')
->example("5000")
->defaultValue("5000")
->end()
->scalarNode('error_threshold')
->info('Changes the error threshold time (ms). This is used to change the toolbar to red when the total response time is > this value')
->example("10000")
->defaultValue("10000")
->end()
->end()
;
return $treeBuilder;
}
}
しかし、これだけでは機能しませんでした。バンドル拡張ファイルのロード関数に次を追加する必要がありました
namespace ChrisJohnson00\ApiProfilerBundle\DependencyInjection;
...
class ChrisJohnson00ApiProfilerExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter('chris_johnson00_api_profiler.warning_threshold', $config['warning_threshold']);
$container->setParameter('chris_johnson00_api_profiler.error_threshold', $config['error_threshold']);
$loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.xml');
}
}
$container->setParameter(...)
拡張ファイルを必要とせずに、バンドルの構成パラメーターを構成するにはどうすればよいですか?