2010-10-16 7 views
6

Ive ha ottenuto in app.yml alcuni dati di configrazione, e voglio metterli in azione. Cerco di farlo da sfConfig :: get ('app_datas') ma fallisce. permette loro di mostrare in dettaglio:Come ottenere e utilizzare l'array associativo da YAML all'azione in Symfony?

YAML:

all: 
    datas: 
    foo: bar 
    foo2: bar2 

e nel actions.class.php cerco di questo codice:

foreach (sfConfig::get('app_datas') as $key => $value) { 

    echo "key $key has value $value"; 

} 

esso non funziona perché sfConfig :: get (' app_datas ') è NULL, quanto è facile ottenerlo?

risposta

9

Quando Symfony carica i file di configurazione app.yml, memorizza solo il 2 ° livello in basso. Quindi non è possibile accedere direttamente a app_datas. Se si desidera ottenere una matrice contenente foo e foo2, creare un file YAML come:

all: 
    datas: 
    baz: 
     foo: bar 
     foo2: bar2 

È quindi possibile fare sfConfig::get('app_datas_baz') che sarà una matrice contenente foo e foo2 come chiavi.

On Modifica: la via di kuba è migliore di un manichino; ho dimenticato che potevi farlo.

15

Se si desidera accedere al primo livello come array è possibile introdurre un livello fittizio intermedio, proprio come suggerito da @jeremy. prefisso con un punto se non si vuole che appaia in realtà in config i nomi delle variabili:

all: 
    .baz: 
    datas: 
     foo: bar 
     foo2: bar2 

Ora si dovrebbe essere in grado di accedere ai dati con:

foreach (sfConfig::get('app_datas') as $key => $value) 
{ 
    echo "key $key has value $value"; 
} 
+0

strada da percorrere , kuba - ho salvato la mia giornata in una dura scadenza! – Timm

+2

Correzione minima: il valore punteggiato sulla seconda riga (.baz) deve avere un suffisso di due punti, uguale alle altre righe. (Farò una modifica). – halfer