2012-09-24 27 views
1

如果環境是「測試」,我怎樣才能將「disable_delivery」設置爲缺省值true?這甚至有可能嗎?基於(的值)另一個或環境設置Symfony 2配置選項?

另一個問題是如何根據另一個配置選項(如「用戶名」)來設置它?

$rootNode 
    ->children() 
     ->scalarNode('method') 
      ->isRequired() 
      ->cannotBeEmpty() 
      ->validate() 
       ->ifNotInArray($methods) 
       ->thenInvalid('The method %s is not supported.') 
      ->end() 
     ->end() 
     ->scalarNode('username')->isRequired()->cannotBeEmpty()->end() 
     ->scalarNode('password')->isRequired()->cannotBeEmpty()->end() 
     ->booleanNode('disable_delivery')->end() 
    ->end() 
; 

回答

1

更好的方法是在你的config_test.yml配置文件中設置這個變量。

如果你仍然想使用默認值:通過容器實例您的配置類及用途:

->booleanNode('disable_delivery')->defaultValue('test' === $this->container->get(‘http_kernel’)->getEnvironment() ? true : false)->end() 

不過,這並不似乎是個好主意。

與第二個問題相同:在配置文件中使用param。對於您的捆綁包的最終用戶來說(這將在兩三個月內)更簡單明瞭。

+0

似乎合理。對於我的第二個問題,我無法理解如何在我的「配置」類中實現該行爲。你能否提供一個例子,即如果提供'username'和'password',將'disable_delivery'設置爲'false'? – gremo

+0

我正在討論配置參數(http://symfony.com/doc/2.0/book/service_container.html#book-service-container-parameters)。你可以在parameters.ini | yml文件中定義它,並在配置文件中重新使用它們。我明白你的意思,但還沒有答案。 –