1

構成ファイルから構成できるようにしたいサービスを構築しました。必要に応じて機能させることができましたが、他のバンドルを見ると、使用しなければならなかったのと同じ構成設定が表示されません。ハックのような気がします。必要なのは、構成値をオプションとして持つことです。つまり、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(...)拡張ファイルを必要とせずに、バンドルの構成パラメーターを構成するにはどうすればよいですか?

4

1 に答える 1

0

答えのあるクックブックを見つけました...私は正しくやっているようです。 http://symfony.com/doc/current/cookbook/bundles/extension.html

于 2014-01-28T03:14:37.400 に答える