Il file di configurazione settings.yml
Molti aspetti di symfony possono essere configurati sia tramite file di
configurazione scritti in YAML sia in semplice PHP. In questa sezione viene
descritto il principale file di configurazione per un'applicazione: settings.yml
.
Il file di configurazione settings.yml
per un'applicazione si trova nella
cartella apps/NOME_APP/config/
.
Come anticipato nell'introduzione il file settings.yml
è
consapevole dell'ambiente
e beneficia del meccanismo di configurazione a cascata.
Ogni sezione dedicata a un ambiente ha due sottosezioni: .actions
e .settings
.
Tutte le impostazioni vanno inserite nella sottosezione .settings
, eccezion
fatta per le azioni predefinite da visualizzare per alcune pagine comuni.
note
Il file di configurazione settings.yml
viene memorizzato in cache come file
PHP; questo processo è gestito in modo automatico dalla
classe
sfDefineEnvironmentConfigHandler
.
Impostazioni
.actions
.settings
La sottosezione .actions
Configurazione predefinita:
default: .actions: error_404_module: default error_404_action: error404 login_module: default login_action: login secure_module: default secure_action: secure module_disabled_module: default module_disabled_action: disabled
La sottosezione .actions
definisce che azione eseguire quando è necessario
visualizzare pagine comuni. Ogni definizione ha due componenti: la prima per il
modulo (con suffisso _module
) e la seconda per l'azione (con suffisso _action
).
error_404
L'azione error_404
viene eseguita quando deve essere visualizzata una pagina 404
(pagina non trovata).
login
L'azione login
viene eseguita quando un utente non autenticato cerca di accedere
a una pagina protetta.
secure
L'azione secure
viene eseguita quando un utente non ha le credenziali richieste.
module_disabled
L'azione module_disabled
viene eseguita quando un utente invia una richiesta
a un modulo disabilitato.
La sottosezione .settings
La sottosezione .settings
è dove si specifica la configurazione del framework.
I paragrafi seguenti descrivono tutte le possibili impostazioni ordinate per
importanza.
Tutte le impostazioni definite nella sezione .settings
sono disponibili in qualsiasi
punto del codice, utilizzando l'oggetto sfConfig
e anteponendo al nome dell'impostazione
il prefisso sf_
. Per esempio, per ottenere il valore dell'impostazione charset
utilizzare:
sfConfig::get('sf_charset');
escaping_strategy
Predefinito: true
L'impostazione escaping_strategy
è un valore booleano che determina se il
sub-framework per l'escape dell'output è abilitato o meno. Quando è abilitato,
tutte le variabili disponibili nei template vengono automaticamente sottoposte
all'escape, chiamando la funzione di supporto definita nell'impostazione
escaping_method
(vedere sotto).
Notare che escaping_method
è l'helper predefinito usato da symfony, tuttavia
può essere rimpiazzato di volta in volta (un esempio è l'output di una variabile
in uno script JavaScript).
Il sub-framework che si occupa dell'escape dell'output utilizza l'impostazione
charset
per il suo compito.
È vivamente consigliato di lasciare il valore predefinito a true
.
tip
Queste impostazioni possono essere dichiarate quando si crea un'applicazione
con il task generate:app
, utilizzando l'opzione --escaping-strategy
.
escaping_method
Predefinito: ESC_SPECIALCHARS
L'impostazione escaping_method
definisce la funzione predefinita da utilizzare
per l'escape delle variabili nei template (vedere escaping_strategy
precedente).
È possibile selezionare uno dei valori proposti: ESC_SPECIALCHARS
, ESC_RAW
,
ESC_ENTITIES
, ESC_JS
, ESC_JS_NO_ENTITIES
e
ESC_SPECIALCHARS
, oppure creare una nuova funzione.
Per la maggior parte dei casi il valore predefinito è la scelta migliore. Può essere
utilizzato anche l'helper ESC_ENTITIES
, specialmente se si lavora solamente con
l'inglese o lingue europee.
csrf_secret
Predefinito: una chiave segreta generata casualmente
L'impostazione csrf_secret
specifica una chiave univoca di sicurezza per
l'applicazione. Se non è impostata a false
, attiva la protezione CSRF per
tutti i form generati dal framework dei form. Questa impostazione è utilizzata anche
dall'helper link_to()
quando c'è la necessità di convertire un link a un form
(per simulare un metodo HTTP DELETE
per esempio).
È vivamente consigliato di cambiare il valore predefinito con una chiave segreta univoca di propria scelta.
tip
Queste impostazioni possono essere dichiarate quando si crea un'applicazione
con il task generate:app
utilizzando l'opzione --csrf-secret
.
charset
Predefinito: utf-8
L'impostazione charset
specifica il set di caratteri che verrà utilizzato in ogni
situazione dal framework: dall'header di risposta Content-Type
alla funzionalità
di escape dell'output.
Il più delle volte il valore predefinito va bene.
warning
Questa impostazione è usata in diversi posti nel framework, quindi il suo valore è messo in cache in molti posti. Dopo averlo cambiato, occorre pulire la cache della configurazione, anche nell'ambiente di sviluppo.
enabled_modules
Predefinito: [default]
L'impostazione enabled_modules
è un array dei nomi dei moduli da abilitare
per la specifica applicazione. Moduli definiti in plugin o nel nucleo di symfony
non sono abilitati in modo predefinito e devono quindi essere elencati in questa
impostazione per essere accessibili.
Aggiungere un modulo è solamente questione di aggiungerlo alla lista (l'ordine con cui vengono inseriti non importa):
enabled_modules: [default, sfGuardAuth]
Il modulo default
definito nel framework contiene tutte le azioni predefinite
impostate nella sottosezione .actions
del file settings.yml
. Raccomandiamo
di personalizzare tutte le impostazioni e quindi rimuovere il modulo default
da questa configurazione.
default_timezone
Predefinito: none
L'impostazione default_timezone
definisce il fuso orario predefinito usato
da PHP. Può essere un qualsiasi fuso orario
riconosciuto da PHP.
note
Se non viene definito nessun fuso orario, verrà chiesto di definirne uno nel file
php.ini
. Altrimenti, symfony cercherà di indovinare il migliore fuso orario
applicabile utilizzando la funzione PHP date_default_timezone_get()
.
cache
Predefinito: false
L'impostazione cache
abilita o meno la cache dei template.
tip
La configurazione generale del sistema della cache viene specificata nelle sezioni
view_cache_manager
e
view_cache
del file factories.yml
.
La configurazione dettagliata viene fatta nel file di configurazione
cache.yml
.
etag
Predefinito: true
, tranne per gli ambienti dev
e test
L'impostazione etag
abilita e disabilita la generazione automatica degli header
HTTP ETag
. L'ETag generato da symfony è un semplice md5 del contenuto della
risposta.
i18n
Predefinito: false
L'impostazione i18n
è un valore Booleano che abilita e disabilita il
sub-framework i18n. Se l'applicazione è internazionalizzata impostarlo a true
.
tip
La configurazione generale del sistema i18n va indicata nella sezione
i18n
del file di configurazione factories.yml
.
default_culture
Predefinito: en
L'impostazione default_culture
definisce la nazionalità predefinita utilizzata
dal sub-framework i18n. Può essere una qualsiasi delle nazionalità valide.
standard_helpers
Predefinito: [Partial, Cache]
L'impostazione standard_helpers
è un array di gruppi di helper da caricare
per tutti i template (nome del gruppo di helper senza il suffisso Helper
).
no_script_name
Predefinito: true
per l'ambiente prod
della prima applicazione creata,
false
per tutte le altre
L'impostazione no_script_name
determina il fatto che il nome del front controller
venga inserito o meno negli URL generati. In modalità predefinita è impostato a true
dal
task generate:app
per l'ambiente prod
della prima applicazione creata.
Ovviamente solo un'applicazione e ambiente può avere questa impostazione impostata
a true
se tutti i front controller sono nella stessa cartella (web/
). Se fosse
necessario avere più di un'applicazione con no_script_name
impostato a true
,
è necessario spostare i front controller corrispondenti in una sotto cartella
della cartella web principale.
lazy_cache_key
Predefinito: true
per i nuovi progetti, false
per progetti aggiornati
Quando abilitata l'impostazione lazy_cache_key
ritarda la creazione di una chiave
cache fino a che non verrà verificato se l'azione o il partial può essere inserito
in cache o meno.
file_link_format
Predefinito: nessuno
Nel messaggio di debug, i percorsi dei file sono link cliccabili se
è impostato il valore di configurazione PHP di sf_file_link_format
o di
xdebug.file_link_format
.
Per esempio, se si vogliono aprire file in TextMate, si può utilizzare il seguente valore:
txmt://open?url=file://%f&line=%l
Il segnaposto %f
sarà sostituito con il percorso assoluto del file e il
segnaposto %l
sarà sostituito con il numero di linea.
logging_enabled
Predefinito: true
per tutti gli ambienti escluso prod
L'impostazione logging_enabled
abilita il sub-framework dei log. Impostandola
a false
, si aggira completamente il meccanismo di log e si ottiene un piccolo
guadagno in termini di prestazioni.
tip
La configurazione fine del sistema dei log deve essere fatta nel file di
configurazione factories.yml
.
web_debug
Predefinito: false
per tutti gli ambienti escluso dev
L'impostazione web_debug
abilita la web debug toolbar. La web debug toolbar
viene inserita in una pagina quando il content type della risposta è HTML.
error_reporting
Predefinito:
prod
: E_PARSE | E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR | E_USER_ERRORdev
: E_ALL | E_STRICTtest
: (E_ALL | E_STRICT) ^ E_NOTICE- default: E_PARSE | E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR | E_USER_ERROR
L'impostazione error_reporting
controlla il livello dell'error reporting di
PHP (da visualizzare nel browser o da scrivere nei log).
tip
Sul sito ufficiale di PHP si possono trovare alcune informazioni su come utilizzare gli operatori logici.
La configurazione predefinita è la più sensibile e non dovrebbe essere modificata.
note
La visualizzazione degli errori nel browser è disabilitata automaticamente per
i front controller che hanno disabilitato il debug
, questo è il caso predefinito
per l'ambiente prod
.
compressed
Predefinito: false
L'impostazione compressed
abilita la compressione nativa di PHP delle risposte.
Se impostato a true
symfony utilizzerà ob_gzhandler
come funzione di callback per ob_start()
.
È raccomandabile tenere questo valore a false
e utilizzare invece il meccanismo
di compressione nativo del web server utilizzato.
use_database
Predefinito: true
L'impostazione use_database
determina se l'applicazione utilizza o meno un
database.
check_lock
Predefinito: false
L'impostazione check_lock
abilita e disabilita il sistema di lock di un'applicazione
azionato da alcuni task come cache:clear
e project:disable
.
Se impostato a true
tutte le richieste verso applicazioni disabilitate verranno
automaticamente redirette alla pagina lib/exception/data/unavailable.php
messa a disposizione dal nucleo di symfony.
tip
È possibile sovrascrivere il template predefinito aggiungendo un file
config/unavailable.php
al progetto o all'applicazione.
web_debug_web_dir
Predefinito: /sf/sf_web_debug
L'impostazione web_debug_web_dir
definisce il percorso per i file della
web debug toolbar (immagini, fogli di stile e file JavaScript).
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.