2016-12-08 3 views
2

Ist es möglich, eine Standardkonfigurationsparameter in Symfony yeml Konfigurationsdatei zu haben. Falls der variable Parameter nicht verfügbar ist. Beispielsweise. Ich habe einen Datenbanknamen, der von der Apache-Konfiguration kommt, aber wenn ich einen Befehl ausführe, würde ich gerne eine Standarddatenbank verwenden, siehe unten. Das Beispiel ist Art twigi'ish vonSymfony2 Standardkonfigurationsparameter

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

Was ist das spezifische Szenario, warum der Parameter nicht definiert wäre? – Gerry

+0

Apache senden '' 'SetEnv SYMFONY__DATABASE__NAME mydatabase''' aber wenn ich symfony Befehl ausführen, Apache ist nicht Teil der Reitsport und Fehler wird geworfen, da es keinen Datenbanknamen gibt – user1529918

Antwort

0

Sie können Ihre Standardkonfiguration in parameters.yml.dist setzen, auf diese Weise, wenn jemand neu das Projekt und läuft verbindet:

composer install 

oder

composer update 

Er wird aufgefordert, seine Umgebung spezifische Werte bereitzustellen und so parameters.yml wird erstellt.

+0

Während Sie dies tun können, hat es keine Relevanz für die Frage. – Cerad

1

Die einzige Möglichkeit dies zu tun wäre, den Parameter auf einen Standardwert zu setzen, von dem ich annehme, dass er früh in der Konfigurationsdatei wäre. Ein theoretisches Beispiel:

parameters: 
    foo: bar 

imports: 
    - { resource: parameters.yml } 

Wenn parameters.yml eine Definition für den% foo% Parameter enthält, wird die vorherige Definition überschrieben. Wenn parameter.yml jedoch keine Definition für% foo% enthält, wird der zuvor definierte (Standardwert) Wert verwendet.

+0

Das Problem dabei ist, dass, wenn Sie *% foo% 'in' parameter.yml' definieren, nachfolgende Läufe von 'composer install' es entfernen (weil es nicht in' parameters.dist.yml' ist). –

0

Ich habe einen Weg gefunden, um dieses Problem zu umgehen, indem ich "database_prefix" als Standard-Datenbank verwende und andere Datenbanken einfach ein Suffix hinzufügen.

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