2016-12-08 124 views
2

是否有可能在Symfony yeml配置文件中具有默認配置參數。在可變參數不可用的情況下。例如。我有來自Apache配置的數據庫名稱,但如果我運行一個命令,我想使用默認數據庫,請參閱下文。這個例子是種twigi'ishSymfony2默認配置參數

doctrine: 
dbal: 
    driver: pdo_mysql 
    host:  "%database_host%" 
    port:  "%database_port%" 
    dbname: "%database.name%"|default('database1') 
    user:  "%database_user%" 
    password: "%database_password%" 
+0

爲什麼參數不能被定義的具體情況是什麼? – Gerry

+0

Apache發送'''SetEnv SYMFONY__DATABASE__NAME mydatabase'''但是當我運行symfony命令時,Apache不是一部分,並且由於沒有數據庫名稱而引發錯誤 – user1529918

回答

0

你可以把你的默認配置parameters.yml.dist,這樣當有人新加入的項目,並運行:

composer install 

composer update 

他將被提示提供他的環境特定值,因此將創建parameters.yml。

+0

雖然你當然可以做到這一點,但它與題。 – Cerad

1

要做到這一點的唯一方法是將參數設置爲默認值,我認爲這會在配置文件的早期。一個理論例如:

parameters: 
    foo: bar 

imports: 
    - { resource: parameters.yml } 

如果parameters.yml包含了%FOO%參數的定義,它會覆蓋原有的定義。但是,如果parameter.yml不包含%foo%的定義,它將使用先前定義的(默認)值。

+0

這個問題是,如果你在'parameters.yml'中定義'%foo%','composer install'的後續運行將會移除它(因爲它不在'parameters.dist.yml'中)。 –

0

我想通過使用「database_prefix」作爲默認數據庫和其他數據庫只是添加一個後綴解決此問題的方法。

doctrine: 
    dbal: 
     driver: pdo_mysql 
     host:  "%database_host%" 
     port:  "%database_port%" 
     dbname: "database_prefix%database.name%" 
     user:  "%database_user%" 
     password: "%database_password%"