2013-10-03 17 views
3

我有一個包從packagist.org進口位於成廠商目錄
這個捆綁有一個帶參數的services.yml配置文件symfony的服務:重寫只有一個參數

parameters: 
    myservice.class: ... 
    myservice.options: 
     MERCHANT_ID: '11223344556677' 
     ACCESS_KEY: YourAccesKey 
     ... 

我要重寫在我應用只有一個參數 /配置/ parameters.yml但它刪除所有myservice.options陣列

parameters: 
    myservice.options: 
     MERCHANT_ID: '99999999999999' 

如何重寫只有一個參數?

+0

捆綁應該使用DIC配置來設置默認值,也許你應該向捆綁提交拉取請求。如果你能告訴我們這個名字,可能我們可以幫忙。 – skler

+0

我的包:https://packagist.org/packages/stloc/payline-bundle。我希望未來的用戶定義自己的標識符 – stloc

+0

有不同的解決方案作爲拉取請求,但最好的方法是使用參數文件 – stloc

回答

4

你應該暴露你的包配置,文檔做的,它是在這裏:

http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class

下面的代碼基地。該陣列

// ACME/YourBundle/DependencyInjection/Configuration.php 
class Configuration implements ConfigurationInterface 
{ 

    public function getConfigTreeBuilder() 
    { 

     $treeBuilder = new TreeBuilder(); 
     $rootNode = $treeBuilder->root('your_bundle'); 

     $rootNode 
       ->children() 
       ->arrayNode('parameters') 
         ->prototype('array') 
          ->treatNullLike(array()) 
          ->children() 
           ->scalarNode('MERCHANT_ID') 
            ->isRequired() 
            ->cannotBeEmpty() 
           ->end() 
            [...] // Another node 
          ->end() 
         ->end() 
        ->end() 
       ->end() 
      ->end() 
    ; 

    return $treeBuilder; 
} 

然後在他的config.yml文件中的每個用戶的每一個參數應該做的事將決定他的私人蔘數:

your_bundle 
    parameters: 
     MERCHANT_ID: XXXXXX 
+0

謝謝skler,我會相應地編輯我的包 – stloc

+0

爲什麼不接受? – skler

+0

見上文。我開發了一個簡單的測試,使用一個名爲test的簡單標量值和/app/config/config.yml覆蓋不替換默認值 – stloc