2014-05-05 9 views
6

Ho problemi a definire un parametro booleano nel file parameters.ini. Questa è la definizione:Symfony2 - Definizione del parametro booleano nei parametri.ini

aParameter = true 

Poi, nel config.yml faccio:

aParameter: %aParameter% 

Ma sto ottenendo questo errore:

InvalidTypeException: Invalid type for path "myService.aParameter". Expected boolean, but got string.

Questo errore scompare quando sostituisco %aParameter% con true . Che cosa sto facendo di sbagliato?

+0

Puoi condividere il tuo codice di 'Configurazione classe' (' getConfigTreeBuilder function' Dove si sta definendo la struttura di configurazione)? – xiidea

+0

Esaminare la classe IniFileLoader in cui vengono caricati i file ini, non è presente il cast di tipo. Quindi tutto sarà string. Non puoi fare nulla con questo –

+2

I valori nei file 'ini' saranno sempre stringhe. Se vuoi altri tipi di valori, devi usare un altro formato, come 'yaml' o' xml'. –

risposta

2

Sembra che non ci sia modo di raggiungerlo. Vedi this issue. Il modo più semplice è quello di sostituire il vostro parameters.ini con parameters.yml

Per esempio, parameters.yml.dist da symfony standard

+0

Non è che non ci sia modo di ottenere questo. Il punto è che il parser ini corrente fornito da sf2 non lo supporta.Il modo semplice è ovviamente utilizzare yaml, ad esempio, ma se sei bloccato con i file ini, puoi dare un'occhiata alla risposta qui sotto. – rolebi

3

Symfony2 default parametri di importazione in formato YAML, quindi una delle prima linea dovrebbero essere:

imports: 
    - { resource: parameters.yml } 

e in uso parameters.yml:

aParameter: true 

io non usare i file INI, così io non sapere come funziona

+0

Ovviamente, sto usando 'importazioni' e tutti gli altri parametri funzionano come stringhe. Il mio unico problema è provare ad usare un parametro booleano. – Manolo

+1

Non sono sicuro .. ma scrivi qui aParameter = true, ma in YAML che era predefinito dovresti usare aParameter: true (: not =). Se si utilizza il file INI di importazione, utilizzare 1 per true, 0 per false – omelkes

+0

Utilizzare '1' anziché' true' restituisce lo stesso errore. Nelle definizioni di 'parameters.ini' ci sono' = ', non': '. – Manolo

3

Symfony 2 utilizza la funzione parse_ini_file() e non sembra restituire il tipo corretto per il valore booleano.

<?php 

file_put_contents('test.ini', "test1=on\ntest2=true\ntest3=1"); 

var_dump(parse_ini_file('test.ini')); 

uscita volontà

array(3) { 
    'test1' => string(1) "1" 
    'test2' => string(1) "1" 
    'test3' => string(1) "1" 
} 

Si potrebbe desiderare di implementare il proprio ini parser prendendo Symfony\Component\DependencyInjection\Loader\IniFileLoader come esempio.

Esempio di lexer che supporta booleani può essere trovato nei commenti a php doc per parse_ini_file()

Un'alternativa sarebbe quella di utilizzare il formato YAML per il file di configurazione.

Problemi correlati