![]() |
|
The symfony Reference BookEventi |
|
You are currently reading "The symfony Reference Book" which is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.
notify notifyUntil filter application application.log application.throw_exception command command.log command.pre_command command.post_command command.filter_options configuration configuration.method_not_found component component.method_not_found context context.load_factories controller controller.change_action controller.method_not_found controller.page_not_found form form.post_configure form.filter_values form.validation_error form.method_not_found plugin plugin.pre_install plugin.post_install plugin.pre_uninstall plugin.post_uninstall request request.filter_parameters request.method_not_found response response.method_not_found response.filter_content routing routing.load_configuration task task.cache.clear template template.filter_parameters user user.change_culture user.method_not_found user.change_authentication view view.configure_format view.method_not_found view.cache view.cache.filter_content 
|
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License. |
I componenti principali di symfony sono disaccoppiati, grazie all'oggetto
sfEventDispatcher. Tale oggetto gestisce le comunicazioni tra i
componenti.
Ogni oggetto può notificare un evento al dispatcher e ogni altro oggetto può connettersi al dispatcher per ascoltare un evento specifico.
Un evento non è altro che un nome composto da uno spazio di nomi e da un
nome, separati da un punto (.).
Si può notificare un evento iniziando con il creare un oggetto evento:
$event = new sfEvent($this, 'user.change_culture', array('culture' => $culture));
E notificarlo:
$dispatcher->notify($event);
Il costruttore sfEvent accetta tre parametri:
null)Per ascoltare un evento, basta connettersi al nome dell'evento:
$dispatcher->connect('user.change_culture', array($this, 'listenToChangeCultureEvent'));
Il metodo connect accetta due parametri:
Ecco un esempio di implementazione di un ascoltatore:
public function listenToChangeCultureEvent(sfEvent $event) { // change the message format object with the new culture $this->setCulture($event['culture']); }
L'ascoltatore prende l'evento come primo parametro. L'oggetto evento ha diversi metodi per recuperare informazioni sull'evento:
getSubject(): Prende l'oggetto del metodo allegato all'eventogetParameters(): Restituisce i parametri dell'eventoSi può avere accesso all'oggetto evento anche come array, per ottenere i suoi parametri.
Gli eventi possono essere scatenati in tre diversi metodi:
notify()notifyUntil()filter()notifyIl metodo notify() notifica a tutti gli ascoltatori. Gli ascoltatori non
possono restituire un valore e tutti gli ascoltatori hanno garanzia di
essere eseguiti.
notifyUntilIl metodo notifyUntil() notifica a tutti gli ascoltatori, finché uno
non interrompe la catena, restituendo il valore true.
L'ascoltatore che interrompe la catena può anche richiamare il metodo
setReturnValue().
Il notificatore può verificare se un ascoltatore ha processato l'evento,
richiamando il metodo isProcessed():
if ($event->isProcessed()) { // ... }
filterIl metodo filter() notifica a tutti gli ascoltatori che possono filtrare
il valore dato, passato come secondo parametro dal notificatore e recuperato
dal callable dell'ascoltatore come secondo parametro. A tutti gli
ascoltatori è passato il valore e tutti devono restituire il valore
filtrato. Tutti gli ascoltatori hanno garanzia di essere eseguiti.
Il notificatore può ottenere il valore filtrato richiamando il metodo
getReturnValue():
$ret = $event->getReturnValue();
application
command
configuration
component
context
controller
form
plugin
request
response
routing
task
template
user
view
view.cache
applicationapplication.logMetodo di notifica: notify
Notificatori predefiniti: diverse classi
| Parametro | Descrizione |
|---|---|
priority |
Il livello di priorità (sfLogger::EMERG, sfLogger::ALERT, sfLogger::CRIT, sfLogger::ERR, sfLogger::WARNING, sfLogger::NOTICE, sfLogger::INFO, or sfLogger::DEBUG) |
L'evento application.log è il meccanismo usato da symfony per eseguire i log
delle richieste web (si veda il factory logger). L'evento è notificato dalla
maggior parte dei componenti principali di symfony.
application.throw_exceptionMetodo di notifica: notifyUntil
Notificatori predefiniti: sfException
L'evento application.throw_exception è notificato quando un'eccezione viene
lanciata e non raccolta, durante l'esecuzione di una richiesta.
Si può ascoltare questo evento per fare qualcosa di speciale ogni volta che viene lanciata un'eccezione non raccolta (come l'invio di una e-mail o il log di un errore). Si può anche ridefinire il meccanismo predefinito di gestione delle eccezioni di symfony, processando l'evento.
commandcommand.logMetodo di notifica: notify
Notificatori predefiniti: sfCommand* classes
| Parametro | Descrizione |
|---|---|
priority |
Il livello di priorità (sfLogger::EMERG, sfLogger::ALERT, sfLogger::CRIT, sfLogger::ERR, sfLogger::WARNING, sfLogger::NOTICE, sfLogger::INFO, or sfLogger::DEBUG) |
L'evento command.log è il meccanismo usato da symfony per il log della
linea di comando (CLI) di symfony (si veda il factory logger).
command.pre_commandMetodo di notifica: notifyUntil
Notificatori predefiniti: sfTask
| Parametro | Descrizione |
|---|---|
arguments |
Un array di parametri da passare alla CLI |
options |
Un array di opzioni da passare alla CLI |
L'evento command.pre_command è notificato subito prima che un task sia
eseguito.
command.post_commandMetodo di notifica: notify
Notificatori predefiniti: sfTask
L'evento command.post_command è notificato subito dopo che un task sia
eseguito.
command.filter_optionsMetodo di notifica: filter
Notificatori predefiniti: sfTask
| Parametro | Descrizione |
|---|---|
command_manager |
L'istanza sfCommandManager |
L'evento command.filter_options è notificato prima che le opzioni del
task CLI siano analizzate. L'evento può essere usato per filtrare le
opzioni passate dall'utente.
configurationconfiguration.method_not_foundMetodo di notifica: notifyUntil
Notificatori predefiniti: sfProjectConfiguration
| Parametro | Descrizion |
|---|---|
method |
Il nome del metodo mancante richiamato |
arguments |
I parametri passati al metodo |
L'evento configuration.method_not_found è notificato quando un metodo non
è definito nella classe sfProjectConfiguration. Ascoltando questo evento,
si può aggiungere un metodo alla classe senza usare l'ereditarietà.
componentcomponent.method_not_foundMetodo di notifica: notifyUntil
Notificatori predefiniti: sfComponent
| Parametro | Descrizione |
|---|---|
method |
Il nome del metodo mancante richiamato |
arguments |
I parametri passati al metodo |
L'evento component.method_not_found è notificato quando un metodo non è
definito nella classe sfComponent. Ascoltando questo evento,
si può aggiungere un metodo alla classe senza usare l'ereditarietà.
contextcontext.load_factoriesMetodo di notifica: notify
Notificatori predefiniti: sfContext
L'evento context.load_factories è notificato una volta a richiesta
dall'oggetto sfContext, subito dopo che tutti i factory sono stati
inizializzati. È il primo evento a essere notificato con tutte le
classi principali inizializzate.
controllercontroller.change_actionMetodo di notifica: notify
Notificatori predefiniti: sfController
| Parametro | Descrizione |
|---|---|
module |
Il nome del modulo da eseguire |
action |
Il nome dell'azione da eseguire |
L'evento controller.change_action è notificato subito prima che
un'azione sia eseguita.
controller.method_not_foundMetodo di notifica: notifyUntil
Notificatori predefiniti: sfController
| Parametro | Descrizione |
|---|---|
method |
Il nome del metodo mancante richiamato |
arguments |
I parametri passati al modulo |
L'evento controller.method_not_found è notificato quando un metodo
non è definito nella classe sfController. Ascoltando questo evento,
si può aggiungere un metodo alla classe senza usare l'ereditarietà.
controller.page_not_foundMetodo di notifica: notify
Notificatori predefiniti: sfController
| Parametro | Descrizione |
|---|---|
module |
Il nome del modulo che ha generato l'errore 404 |
action |
Il nome dell'azione che ha generato l'errore 404 |
L'evento controller.page_not_found è notificato quando si genera
un errore 404 durante la gestione di una richiesta.
Si può ascoltare questo evento per fare qualcosa di speciale quando si verifica un errore 404, come ad esempio inviare una e-mail o scrivere l'errore su un log.
formform.post_configureMetodo di notifica: notify
Notificatori predefiniti: sfFormSymfony
L'evento form.post_configure è notificato dopo dopo che ogni form è configurato.
form.filter_valuesMetodo di notifica: filter
Notificatori predefiniti: sfFormSymfony
L'evento form.filter_values filtra gli array di parametri e file uniti
appena prima di fare il binding.
form.validation_errorMetodo di notifica: notify
Notificatori predefiniti: sfFormSymfony
| Parametro | Descrizione |
|---|---|
error |
L'istanza di errore |
L'evento form.validation_error è notificato quando la validazione del form fallisce.
form.method_not_foundMetodo di notifica: notifyUntil
Notificatori predefiniti: sfFormSymfony
| Parametro | Descrizione |
|---|---|
method |
Il nome del metodo chiamato mancante |
arguments |
Gli argomento passati al metodo |
L'evento form.method_not_found è notificato quando un metodo non è definito
nella classe sfFormSymfony. Ascoltando questo evento, un metodo può essere aggiunto
alla classe, senza utilizzare l'ereditarietà.
pluginplugin.pre_installMetodo di notifica: notify
Notificatori predefiniti: sfPluginManager
| Parametro | Descrizione |
|---|---|
channel |
Il canale del plugin |
plugin |
Il nome del plugin |
is_package |
Se il plugin da installare è un pacchetto locale (true) o un pacchetto web (false) |
L'evento plugin.pre_install è notificato subito prima che un plugin
sia installato.
plugin.post_installMetodo di notifica: notify
Notificatori predefiniti: sfPluginManager
| Parametro | Descrizione |
|---|---|
channel |
Il canale del plugin |
plugin |
Il nome del plugin |
L'evento plugin.post_install è notificato subito dopo che un plugin
è stato installato.
plugin.pre_uninstallMetodo di notifica: notify
Notificatori predefiniti: sfPluginManager
| Parametro | Descrizione |
|---|---|
channel |
Il canale del plugin |
plugin |
Il nome del plugin |
L'evento plugin.pre_uninstall è notificato subito prima che un plugin
sia disinstallato.
plugin.post_uninstallMetodo di notifica: notify
Notificatori predefiniti: sfPluginManager
| Parametro | Descrizione |
|---|---|
channel |
Il canale del plugin |
plugin |
Il nome del plugin |
L'evento plugin.post_uninstall è notificato subito dopo che un plugin
sia disinstallato.
requestrequest.filter_parametersMetodo di notifica: filter
Notificatori predefiniti: sfWebRequest
| Parametro | Descrizione |
|---|---|
path_info |
Il percorso della richiesta |
L'evento request.filter_parameters è notificato quando i parametri
della richiesta sono inizializzati.
request.method_not_foundMetodo di notifica: notifyUntil
Notificatori predefiniti: sfRequest
| Parametro | Descrizione |
|---|---|
method |
Il nome del metodo richiamato mancante |
arguments |
I parametri passati al metodo |
L'evento request.method_not_found è notificato quando un metodo non
è definito nella classe sfRequest. Ascoltando questo evento,
si può aggiungere un metodo alla classe senza usare l'ereditarietà.
responseresponse.method_not_foundMetodo di notifica: notifyUntil
Notificatori predefiniti: sfResponse
| Parametro | Descrizione |
|---|---|
method |
Il nome del metodo richiamato mancante |
arguments |
I parametri passati al metodo |
L'evento response.method_not_found è notificato quando un metodo non
è definito nella classe sfResponse. Ascoltando questo evento,
si può aggiungere un metodo alla classe senza usare l'ereditarietà.
response.filter_contentMetodo di notifica: filter
Notificatori predefiniti: sfResponse
L'evento response.filter_content è notificato prima che una risposta
sia inviata. Ascoltando questo evento, si può manipolare il contenuto
della risposta prima che sia inviata.
routingrouting.load_configurationMetodo di notifica: notify
Notificatori predefiniti: sfRouting
L'evento routing.load_configuration è notificato quando il factory del
routing carica la sua configurazione.
tasktask.cache.clearMetodo di notifica: notifyUntil
Notificatori predefiniti: sfCacheClearTask
| Parametro | Descrizione |
|---|---|
app |
Il nome dell'applicazione |
type |
Il tipo di cache (all, config, i18n, routing, module e template) |
env |
L'ambiente |
L'evento task.cache.clear è notificato quando l'utente pulisce la cache
dalla CLI con il task cache:clear.
templatetemplate.filter_parametersMetodo di notifica: filter
Notificatori predefiniti: sfViewParameterHolder
L'evento template.filter_parameters è notificato prima che la vista di un
file sia resa. Ascoltando questo evento, si può accedere e manipolare le
variabili passate a un template.
useruser.change_cultureMetodo di notifica: notify
Notificatori predefiniti: sfUser
| Parametro | Descrizione |
|---|---|
culture |
The user culture |
L'evento user.change_culture è notificato quando la cultura di un
utente viene cambiata durante una richiesta.
user.method_not_foundMetodo di notifica: notifyUntil
Notificatori predefiniti: sfUser
| Parametro | Descrizione |
|---|---|
method |
Il nome del metodo richiamato mancante |
arguments |
I parametri passati al metodo |
L'evento user.method_not_found è notificato quando un metodo non
è definito nella classe sfUser. Ascoltando questo evento,
si può aggiungere un metodo alla classe senza usare l'ereditarietà.
user.change_authenticationMetodo di notifica: notify
Notificatori predefiniti: sfBasicSecurityUser
| Parametro | Descrizione |
|---|---|
authenticated |
Se l'utente è autenticato o meno |
L'evento user.change_authentication è notificato quando lo stato
di autenticazione di un utente cambia.
viewview.configure_formatMetodo di notifica: notify
Notificatori predefiniti: sfView
| Parametro | Descrizione |
|---|---|
format |
Il formato richiesto |
response |
L'oggetto risposta |
request |
L'oggetto richiesta |
L'evento view.configure_format è notificato dalla vista quando la
richiesta ha il parametro sf_format impostato. L'evento è
notificato dopo che symfony ha eseguito cose semplici, come cambiare,
impostare o de-impostare il layout. Questo evento consente agli oggetti
vista e risposta di essere modificati in base al formato richiesto.
view.method_not_foundMetodo di notifica: notifyUntil
Notificatori predefiniti: sfView
| Parametro | Descrizione |
|---|---|
method |
Il nome del metodo richiamato mancante |
arguments |
I parametri passati al metodo |
L'evento view.method_not_found è notificato quando un metodo non
è definito nella classe sfView. Ascoltando questo evento,
si può aggiungere un metodo alla classe senza usare l'ereditarietà.
view.cacheview.cache.filter_contentMetodo di notifica: filter
Notificatori predefiniti: sfViewCacheManager
| Parametro | Descrizione |
|---|---|
response |
L'oggetto risposta |
uri |
La URI del contenuto in cache |
new |
Se il contenuto in cache è nuovo o meno |
L'evento view.cache.filter_content è notificato quando un contenuto
viene recuperato dalla cache.
If you find a typo or an error, please register and open a ticket.
If you need support or have a technical question, please post to the official user mailing-list.