![]() |
|
The symfony Reference BookEvénements |
|
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. |
Les composants du noyau de symfony sont découplés grâce à un objet sfEventDispatcher.
Le contrôleur d'événement gère la communication entre les composants du noyau.
Tout objet peut notifier un événement au contrôleur, et n'importe quel objet peut se connecter au contrôleur afin d'écouter un événement spécifique.
Un événement est juste un nom composé d'un espace de nommage et un nom séparé par un point
(.).
Vous pouvez notifier un événement en créant d'abord un objet événement :
$event = new sfEvent($this, 'user.change_culture', array('culture' => $culture));
Et le notifier :
$dispatcher->notify($event);
Le constructeur sfEvent prend trois arguments :
null)Pour écouter un événement, connectez le au nom de l'évènement :
$dispatcher->connect('user.change_culture', array($this, 'listenToChangeCultureEvent'));
La méthode connect prend deux arguments :
Voici un exemple de mise en œuvre d'un Listener :
public function listenToChangeCultureEvent(sfEvent $event) { // change l'objet format du message avec une nouvelle culture $this->setCulture($event['culture']); }
Le Listener reçoit l'événement en tant que premier argument. L'objet événement possède plusieurs méthodes pour obtenir des informations sur l'événement :
getSubject(): Obtient l'objet sujet attaché à l'événementgetParameters(): Retourne les paramètres de l'événementL'objet événement peut également être accédé comme un tableau pour obtenir ses paramètres.
Les événements peuvent être déclenchés par trois méthodes différentes :
notify()notifyUntil()filter()notifyLa méthode notify() notifie à tous les Listeners. Les Listeners ne peuvent pas retourner une
valeur et tous les Listeners sont garantis d'être exécutés.
notifyUntilLa méthode notifyUntil() notifie à tous les Listeners jusqu'à ce que l'on arrête la chaîne
en renvoyant une valeur true.
L'écouteur qui interrompt la chaîne peut également appeler la méthode setReturnValue().
Le notifiant peut vérifier si un Listener a traité l'événement en appelant la
méthode isProcessed() :
if ($event->isProcessed()) { // ... }
filterLa méthode filter() notifie à tous les Listeners qu'ils peuvent filtrer la valeur
donnée, passée en second argument par le notifiant, et la récupérée par le
Listener appelable comme second argument. La valeur est passée à tous les Listeners
et ils doivent retourner la valeur filtrée. Tous les Listeners sont garantis d'être
exécutés.
Le notifiant peut obtenir la valeur filtrée en appelant la méthode
getReturnValue() :
$ret = $event->getReturnValue();
application
command
configuration
component
context
controller
form
plugin
request
response
routing
task
template
user
view
view.cache
applicationapplication.logMéthode de notification : notify
Notificateur par défaut : beaucoup de classes
| Paramètre | Description |
|---|---|
priority |
Le niveau de priorité (sfLogger::EMERG, sfLogger::ALERT, sfLogger::CRIT, sfLogger::ERR, sfLogger::WARNING, sfLogger::NOTICE, sfLogger::INFO, ou sfLogger::DEBUG) |
L'événement application.log est le mécanisme utilisé par symfony pour faire la journalisation
des requêtes web (Voir le factory logger). L'événement est notifié par la plupart
des composants de base de symfony.
application.throw_exceptionMéthode de notification : notifyUntil
Notificateur par défaut : sfException
L'événement application.throw_exception est notifié lorsque une exception non capturée
est levée pendant le traitement d'une requête.
Vous pouvez écouter cet événement pour faire quelque chose de spécial chaque fois qu'une exception non capturée est levé (comme l'envoi d'un email, ou la journalisation de l'erreur). Vous pouvez également remplacer le mécanisme d'exception par défaut du gestionnaire de symfony par le traitement de l'événement.
commandcommand.logMéthode de notification : notify
Notificateur par défaut : Les classes sfCommand*
| Paramètre | Description |
|---|---|
priority |
Le niveau de priorité (sfLogger::EMERG, sfLogger::ALERT, sfLogger::CRIT, sfLogger::ERR, sfLogger::WARNING, sfLogger::NOTICE, sfLogger::INFO, ou sfLogger::DEBUG) |
L'événement command.log est le mécanisme utilisé par symfony pour faire la journalisation pour
l'utilitaire CLI de symfony (voir le factory logger).
command.pre_commandMéthode de notification : notifyUntil
Notificateur par défaut : sfTask
| Paramètre | Description |
|---|---|
arguments |
Un tableau d'arguments passé à CLI |
options |
Un tableau d'options passé à CLI |
L'événement command.pre_command est notifié juste avant qu'une tâche soit exécutée.
command.post_commandMéthode de notification : notify
Notificateur par défaut : sfTask
L'événement command.post_command est notifié juste après qu'une tâche soit exécutée.
command.filter_optionsMéthode de notification : filter
Notificateur par défaut : sfTask
| Paramètre | Description |
|---|---|
command_manager |
Les instances de sfCommandManager |
L'événement command.filter_options est notifié juste avant que les options CLI d'une tâche soient
analysées. Cet événement peut être utilisé pour filtrer les options passées par l'utilisateur.
configurationconfiguration.method_not_foundMéthode de notification : notifyUntil
Notificateur par défaut : sfProjectConfiguration
| Paramètre | Description |
|---|---|
method |
Le nom de la méthode manquante appelée |
arguments |
Les arguments passés à la méthode |
L'événement configuration.method_not_found est notifié lorsqu'une méthode n'est pas
définie dans la classe sfProjectConfiguration. En écoutant cet événement, une
méthode peut être ajoutée à la classe, sans utiliser l'héritage.
componentcomponent.method_not_foundMéthode de notification : notifyUntil
Notificateur par défaut : sfComponent
| Paramètre | Description |
|---|---|
method |
Le nom de la méthode manquante appelée |
arguments |
Les arguments passés à la méthode |
L'événement component.method_not_found est notifié lorsqu'une méthode n'est pas
définie dans la classe sfComponent. En écoutant cet événement, une méthode peut
être ajoutée à la classe, sans utiliser l'héritage.
contextcontext.load_factoriesMéthode de notification : notify
Notificateur par défaut : sfContext
L'événement context.load_factories est notifié une fois par requête par
l'objet sfContext juste après que toutes les Factories soient initialisées. C'est le
premier événement à être notifiée à toutes les classes de base initialisées.
controllercontroller.change_actionMéthode de notification : notify
Notificateur par défaut : sfController
| Paramètre | Description |
|---|---|
module |
Le nom du module a exécuté |
action |
Le nom de l'action a exécuté |
Le controller.change_action est notifié juste avant que l'action soit exécutée.
controller.method_not_foundMéthode de notification : notifyUntil
Notificateur par défaut : sfController
| Paramètre | Description |
|---|---|
method |
Le nom de la méthode manquante appelée |
arguments |
Les arguments passés à la méthode |
L'événement controller.method_not_found est notifié lorsqu'une méthode n'est pas
définie dans la classe sfController. En écoutant cet événement, une méthode peut
être ajoutée à la classe, sans utiliser l'héritage.
controller.page_not_foundMéthode de notification : notify
Notificateur par défaut : sfController
| Paramètre | Description |
|---|---|
module |
Le nom du module qui génère l'erreur 404 |
action |
Le nom de l'action qui génère l'erreur 404 |
Le controller.page_not_found est notifié quand une erreur 404 est générée
lors du traitement d'une requête.
Vous pouvez écouter cet événement pour faire quelque chose de spécial chaque fois que survient une page 404, comme envoyer un email, ou la journalisation de l'erreur.
formform.post_configureMéthode de notification : notify
Notificateur par défaut : sfFormSymfony
L'événement form.post_configure est notifié après que chaque formulaire soit configuré.
form.filter_valuesMéthode de notification : filter
Notificateur par défaut : sfFormSymfony
L'événement form.filter_values filtre les paramètres fusionnés, corrompus et
les tableaux de fichiers juste avant la liaison.
form.validation_errorMéthode de notification : notify
Notificateur par défaut : sfFormSymfony
| Paramètre | Description |
|---|---|
error |
L'instance de l'erreur |
L'événement form.validation_error est notifié pour toutes les validations des formulaires qui échouent.
form.method_not_foundMéthode de notification : notifyUntil
Notificateur par défaut : sfFormSymfony
| Paramètre | Description |
|---|---|
method |
Le nom de la méthode manquante appelée |
arguments |
Les arguments passés à la méthode |
L'événement form.method_not_found est notifié lorsqu'une méthode n'est pas
définie dans la classe sfFormSymfony. En écoutant cet événement, une méthode peut
être ajoutée à la classe, sans utiliser l'héritage.
pluginplugin.pre_installMéthode de notification : notify
Notificateur par défaut : sfPluginManager
| Paramètre | Description |
|---|---|
channel |
Le canal du plugin |
plugin |
Le nom du plugin |
is_package |
Si le plugin à installer est dans un package local (true), ou un package web (false) |
L'événement plugin.pre_install est notifié juste avant que le plugin soit
installé.
plugin.post_installMéthode de notification : notify
Notificateur par défaut : sfPluginManager
| Paramètre | Description |
|---|---|
channel |
Le canal du plugin |
plugin |
Le nom du plugin |
L'événement plugin.post_install est notifié juste après que le plugin soit
installé.
plugin.pre_uninstallMéthode de notification : notify
Notificateur par défaut : sfPluginManager
| Paramètre | Description |
|---|---|
channel |
Le canal du plugin |
plugin |
Le nom du plugin |
L'événement plugin.pre_uninstall est notifié juste avant que le plugin soit
désinstallé.
plugin.post_uninstallMéthode de notification : notify
Notificateur par défaut : sfPluginManager
| Paramètre | Description |
|---|---|
channel |
Le canal du plugin |
plugin |
Le nom du plugin |
L'événement plugin.post_uninstall est notifié juste après que le plugin soit
désinstallé.
requestrequest.filter_parametersMéthode de notification : filter
Notificateur par défaut : sfWebRequest
| Paramètre | Description |
|---|---|
path_info |
Le chemin de la requête |
L'événement request.filter_parameters est notifié lorsque les paramètres de la requête
sont initialisés.
request.method_not_foundMéthode de notification : notifyUntil
Notificateur par défaut : sfRequest
| Paramètre | Description |
|---|---|
method |
Le nom de la méthode manquante appelée |
arguments |
Les arguments passés à la méthode |
L'événement request.method_not_found est notifié lorsqu'une méthode n'est pas
définie dans la classe sfRequest. En écoutant cet événement, une méthode peut
être ajoutée à la classe, sans utiliser l'héritage.
responseresponse.method_not_foundMéthode de notification : notifyUntil
Notificateur par défaut : sfResponse
| Paramètre | Description |
|---|---|
method |
Le nom de la méthode manquante appelée |
arguments |
Les arguments passés à la méthode |
L'événement response.method_not_found est notifié lorsqu'une méthode n'est pas
définie dans la classe sfResponse. En écoutant cet événement, une méthode peut
être ajoutée à la classe, sans utiliser l'héritage.
response.filter_contentMéthode de notification : filter
Notificateur par défaut : sfResponse
L'événement response.filter_content est notifié avant que la réponse soit envoyée. En
écoutant cet événement, vous pouvez manipuler le contenu de la réponse avant
de l'envoyer.
routingrouting.load_configurationMéthode de notification : notify
Notificateur par défaut : sfRouting
L'événement routing.load_configuration est notifié quand le Factory de routage
charge la configuration du routage.
tasktask.cache.clearMéthode de notification : notifyUntil
Notificateur par défaut : sfCacheClearTask
| Paramètre | Description |
|---|---|
app |
Le nom de l'application |
type |
Le type de cache (all, config, i18n, routing, module, et template) |
env |
L'environnement |
L'événement task.cache.clear est notifié lorsque l'utilisateur vide le cache
avec la tâche CLI cache:clear.
templatetemplate.filter_parametersMéthode de notification : filter
Notificateur par défaut : sfViewParameterHolder
L'événement template.filter_parameters est notifié avant que le fichier de la vue soit
rendu. En écoutant cet événement, vous pouvez accéder et manipuler les variables
passées au Template.
useruser.change_cultureMéthode de notification : notify
Notificateur par défaut : sfUser
| Paramètre | Description |
|---|---|
culture |
La culture de l'utilisateur |
L'événement user.change_culture est notifié lorsque la culture de l'utilisateur est modifiée
lors de la requête.
user.method_not_foundMéthode de notification : notifyUntil
Notificateur par défaut : sfUser
| Paramètre | Description |
|---|---|
method |
Le nom de la méthode manquante appelée |
arguments |
Les arguments passés à la méthode |
L'événement user.method_not_found est notifié lorsqu'une méthode n'est pas
définie dans la classe sfUser. En écoutant cet événement, une méthode peut
être ajoutée à la classe, sans utiliser l'héritage.
user.change_authenticationMéthode de notification : notify
Notificateur par défaut : sfBasicSecurityUser
| Paramètre | Description |
|---|---|
authenticated |
Si l'utilisateur est authentifié ou non |
L'événement user.change_authentication est notifié lorsque le statut
d'authentification de l'utilisateur change.
viewview.configure_formatMéthode de notification : notify
Notificateur par défaut : sfView
| Paramètre | Description |
|---|---|
format |
Le format requêté |
response |
L'objet de la réponse |
request |
L'objet de la requête |
L'événement view.configure_format est notifié par la vue quand la requête change
le paramètre 'sf_format'. L'événement est notifié après que symfony ait fait des
choses simples comme le changement ou le non changement de la mise en page. Cet événement permet
à la vue et l'objet de la réponse d'être changés selon le format
requêté.
view.method_not_foundMéthode de notification : notifyUntil
Notificateur par défaut : sfView
| Paramètre | Description |
|---|---|
method |
Le nom de la méthode manquante appelée |
arguments |
Les arguments passés à la méthode |
L'événement view.method_not_found est notifié lorsqu'une méthode n'est pas
définie dans la classe sfView. En écoutant cet événement, une méthode peut
être ajoutée à la classe, sans utiliser l'héritage.
view.cacheview.cache.filter_contentMéthode de notification : filter
Notificateur par défaut : sfViewCacheManager
| Paramètre | Description |
|---|---|
response |
L'objet de la réponse |
uri |
Le URI du contenu du cache |
new |
Si le contenu est nouveau ou non dans le cache |
L'événement view.cache.filter_content est notifié lorsque le contenu est
récupéré du 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.