Events
The symfony core components are decoupled thanks to an sfEventDispatcher
object. The event dispatcher manages the communication between core components.
Any object can notify an event to the dispatcher, and any other object can connect to the dispatcher to listen to a specific event.
An event is just a name composed of a namespace and a name separated by a dot (.
).
Usage
You can notify an event by first creating an event object:
$event = new sfEvent($this, 'user.change_culture', array('culture' => $culture));
And notify it:
$dispatcher->notify($event);
The sfEvent
constructor takes three arguments:
- The "subject" of the event (most of the time, this is the object notifying the event, but it can also be
null
) - The event name
- An array of parameters to pass to the listeners
To listen for an event, connect to that event name:
$dispatcher->connect('user.change_culture', array($this, 'listenToChangeCultureEvent'));
The connect
method takes two arguments:
- The event name
- A PHP callable to call when the event is notified
Here is an implementation example of a listener:
public function listenToChangeCultureEvent(sfEvent $event) { // change the message format object with the new culture $this->setCulture($event['culture']); }
The listener gets the event as the first argument. The event object has several methods to get event information:
getSubject()
: Gets the subject object attached to the eventgetParameters()
: Returns the event parameters
The event object can also be accessed as an array to get its parameters.
Event Types
Events can be triggered by three different methods:
notify()
notifyUntil()
filter()
~notify
~
The notify()
method notifies all listeners. The listeners cannot return a value and all listeners are guaranteed to be executed.
~notifyUntil
~
The notifyUntil()
method notifies all listeners until one stops the chain by returning a true
value.
The listener that stops the chain may also call the setReturnValue()
method.
The notifier can check if a listener has processed the event by calling the isProcessed()
method:
if ($event->isProcessed()) { // ... }
~filter
~
The filter()
method notifies all listeners that they can filter the given value, passed as a second argument by the notifier, and retrieved by the listener callable as the second argument. All listeners are passed the value and they must return the filtered value. All listeners are guaranteed to be executed.
The notifier can get the filtered value by calling the getReturnValue()
method:
$ret = $event->getReturnValue();
Events
-
application
-
command
-
configuration
-
component
-
context
-
controller
-
debug
-
doctrine
-
form
-
mailer
-
plugin
-
propel
-
request
-
response
-
routing
-
task
-
template
-
user
-
view
-
view.cache
application
~application.log
~
Notify method: notify
Default notifiers: lot of classes
Parameter | Description |
---|---|
priority |
The priority level (sfLogger::EMERG , sfLogger::ALERT , sfLogger::CRIT , sfLogger::ERR , sfLogger::WARNING , sfLogger::NOTICE , sfLogger::INFO , or sfLogger::DEBUG ) |
The application.log
event is the mechanism used by symfony to do the logging for web request (see the logger factory). The event is notified by most symfony core components.
~application.throw_exception
~
Notify method: notifyUntil
Default notifiers: sfException
The application.throw_exception
event is notified when an uncaught exception is thrown during the handling of a request.
You can listen to this event to do something special whenever an uncaught exception is thrown( like sending an email, or logging the error). You can also override the default exception management mechanism of symfony by processing the event.
command
~command.log
~
Notify method: notify
Default notifiers: sfCommand*
classes
Parameter | Description |
---|---|
priority |
The priority level (sfLogger::EMERG , sfLogger::ALERT , sfLogger::CRIT , sfLogger::ERR , sfLogger::WARNING , sfLogger::NOTICE , sfLogger::INFO , or sfLogger::DEBUG ) |
The command.log
event is the mechanism used by symfony to do the logging for the symfony CLI utility (see the logger factory).
~command.pre_command
~
Notify method: notifyUntil
Default notifiers: sfTask
Parameter | Description |
---|---|
arguments |
An array of arguments passed on the CLI |
options |
An array of options passed on the CLI |
The command.pre_command
event is notified just before a task is executed.
~command.post_command
~
Notify method: notify
Default notifiers: sfTask
The command.post_command
event is notified just after a task is executed.
~command.filter_options
~
Notify method: filter
Default notifiers: sfTask
Parameter | Description |
---|---|
command_manager |
The sfCommandManager instance |
The command.filter_options
event is notified before the task CLI options are parsed. This event can be used to filter the options passed by the user.
configuration
~configuration.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfProjectConfiguration
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The configuration.method_not_found
event is notified when a method is not defined in the sfProjectConfiguration
class. By listening to this event, a method can be added to the class, without using inheritance.
component
~component.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfComponent
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The component.method_not_found
event is notified when a method is not defined in the sfComponent
class. By listening to this event, a method can be added to the class, without using inheritance.
context
~context.load_factories
~
Notify method: notify
Default notifiers: sfContext
The context.load_factories
event is notified once per request by the sfContext
object just after all factories have been initialized. This is the first event to be notified with all core classes initialized.
~context.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfContext
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The context.method_not_found
event is notified when a method is not defined in the sfContext
class. By listening to this event, a method can be added to the class, without using inheritance.
controller
~controller.change_action
~
Notify method: notify
Default notifiers: sfController
Parameter | Description |
---|---|
module |
The module name to be executed |
action |
The action name to be executed |
The controller.change_action
is notified just before an action is executed.
~controller.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfController
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The controller.method_not_found
event is notified when a method is not defined in the sfController
class. By listening to this event, a method can be added to the class, without using inheritance.
~controller.page_not_found
~
Notify method: notify
Default notifiers: sfController
Parameter | Description |
---|---|
module |
The module name that generated the 404 error |
action |
The action name that generated the 404 error |
The controller.page_not_found
is notified whenever a 404 error is generated during the handling of a request.
You can listen to this event to do something special whenever a 404 page occurs, like sending an email, or logging the error. the event.
debug
~debug.web.load_panels
~
Notify method: notify
Default notifiers: sfWebDebug
The debug.web.load_panels
event is notified after the call to the configure
method of the sfWebDebug
instance. You can use this event to manage your own panels.
debug.web.view.filter_parameter_html
Notify method: filter
Default notifiers: sfWebDebugPanelView
Parameter | Description |
---|---|
parameter |
The parameter to filter |
The debug.web.view.filter_parameter_html
event filters each parameter rendered by the sfWebDebugPanelView
panel.
doctrine
~doctrine.configure
~
Notify method: notify
Default notifiers: sfDoctrinePluginConfiguration
The doctrine.configure
event is notified after the Doctrine plugin has been configured.
~doctrine.filter_model_builder_options
~
Notify method: filter
Default notifiers: sfDoctrinePluginConfiguration
The doctrine.filter_model_builder_options
event filters the options for the Doctrine schema builder.
~doctrine.filter_cli_config
~
Notify method: filter
Default notifiers: sfDoctrinePluginConfiguration
The doctrine.filter_cli_config
event filters the configuration array for the Doctrine CLI.
~doctrine.configure_connection
~
Notify method: notify
Default notifiers: Doctrine_Manager
through sfDoctrineDatabase
Parameter | Description |
---|---|
connection |
The Doctrine_Connection instance |
database |
The sfDoctrineDatabase instance |
The doctrine.configure_connection
event is notified when a Doctrine database is initialized for the first time.
~doctrine.admin.delete_object
~
Notify method: notify
Default notifiers: Admin generator module class
Parameter | Description |
---|---|
object |
The Doctrine object to delete |
The doctrine.admin.delete_object
event is notified when a Doctrine object is deleted in an admin generator module.
~doctrine.admin.save_object
~
Notify method: notify
Default notifiers: Admin generator module class
Parameter | Description |
---|---|
object |
The Doctrine object to delete |
The doctrine.admin.save_object
event is notified when a Doctrine object is saved in an admin generator module.
~doctrine.admin.build_query
~
Notify method: filter
Default notifiers: Admin generator module class
The doctrine.admin.build_query
event is notified when a Doctrine Query is created in an admin generator module.
~doctrine.admin.pre_execute
~
Notify method: notify
Default notifiers: Admin generator module class
Parameter | Description |
---|---|
configuration |
The admin generator configuration object |
The doctrine.admin.pre_execute
event is notified in the preExecute()
method of admin generator modules.
form
~form.post_configure
~
Notify method: notify
Default notifiers: sfFormSymfony
The form.post_configure
event is notified after every form is configured.
~form.filter_values
~
Notify method: filter
Default notifiers: sfFormSymfony
The form.filter_values
event filters the merged, tainted parameters and files array just prior to binding.
~form.validation_error
~
Notify method: notify
Default notifiers: sfFormSymfony
Parameter | Description |
---|---|
error |
The error instance |
The form.validation_error
event is notified whenever form validation fails.
~form.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfFormSymfony
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The form.method_not_found
event is notified when a method is not defined in the sfFormSymfony
class. By listening to this event, a method can be added to the class, without using inheritance.
mailer
~mailer.configure
~
Notify method: notify
Default notifiers: sfMailer
The mailer.configure
event is notified after the mailer instance has been configured. The mailer instance is the subject of the event.
plugin
~plugin.pre_install
~
Notify method: notify
Default notifiers: sfPluginManager
Parameter | Description |
---|---|
channel |
The plugin channel |
plugin |
The plugin name |
is_package |
Whether the plugin to install is a local package (true ), or a web package (false ) |
The plugin.pre_install
event is notified just before a plugin will be installed.
~plugin.post_install
~
Notify method: notify
Default notifiers: sfPluginManager
Parameter | Description |
---|---|
channel |
The plugin channel |
plugin |
The plugin name |
The plugin.post_install
event is notified just after a plugin has been installed.
~plugin.pre_uninstall
~
Notify method: notify
Default notifiers: sfPluginManager
Parameter | Description |
---|---|
channel |
The plugin channel |
plugin |
The plugin name |
The plugin.pre_uninstall
event is notified just before a plugin will be uninstalled.
~plugin.post_uninstall
~
Notify method: notify
Default notifiers: sfPluginManager
Parameter | Description |
---|---|
channel |
The plugin channel |
plugin |
The plugin name |
The plugin.post_uninstall
event is notified just after a plugin has been uninstalled.
propel
~propel.configure
~
Notify method: notify
Default notifiers: sfPropelPluginConfiguration
The propel.configure
event is notified after the Propel plugin has been configured.
~propel.filter_phing_args
~
Notify method: filter
Default notifiers: sfPropelBaseTask
The propel.filter_phing_args
event filters the configuration array for the Propel CLI.
~propel.filter_connection_config
~
Notify method: filter
Default notifiers: sfPropelDatabase
Parameter | Description |
---|---|
name |
The name of the connection |
database |
The sfPropelDatabase instance |
The propel.filter_connection_config
event is notified when a Propel database is initialized for the first time.
~propel.admin.delete_object
~
Notify method: notify
Default notifiers: Admin generator module class
Parameter | Description |
---|---|
object |
The Propel object to delete |
The propel.admin.delete_object
event is notified when a Propel object is deleted in an admin generator module.
~propel.admin.save_object
~
Notify method: notify
Default notifiers: Admin generator module class
Parameter | Description |
---|---|
object |
The Propel object to delete |
The propel.admin.save_object
event is notified when a Propel object is saved in an admin generator module.
~propel.admin.build_criteria
~
Notify method: filter
Default notifiers: Admin generator module class
The propel.admin.build_criteria
event is notified when a Propel Criteria is created in an admin generator module.
~propel.admin.pre_execute
~
Notify method: notify
Default notifiers: Admin generator module class
Parameter | Description |
---|---|
configuration |
The admin generator configuration object |
The propel.admin.pre_execute
event is notified in the preExecute()
method of admin generator modules.
request
~request.filter_parameters
~
Notify method: filter
Default notifiers: sfWebRequest
Parameter | Description |
---|---|
path_info |
The request path |
The request.filter_parameters
event is notified when the request parameters are initialized.
~request.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfRequest
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The request.method_not_found
event is notified when a method is not defined in the sfRequest
class. By listening to this event, a method can be added to the class, without using inheritance.
response
~response.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfResponse
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The response.method_not_found
event is notified when a method is not defined in the sfResponse
class. By listening to this event, a method can be added to the class, without using inheritance.
~response.filter_content
~
Notify method: filter
Default notifiers: sfResponse
The response.filter_content
event is notified before a response is sent. By listening to this event, you can manipulate the content of the response before it is sent.
routing
~routing.load_configuration
~
Notify method: notify
Default notifiers: sfRouting
The routing.load_configuration
event is notified when the routing factory loads the routing configuration.
task
~task.cache.clear
~
Notify method: notifyUntil
Default notifiers: sfCacheClearTask
Parameter | Description |
---|---|
app |
The application name |
type |
The type of cache (all , config , i18n , routing , module , and template ) |
env |
The environment |
The task.cache.clear
event is notified whenever the user clears the cache from the CLI with the cache:clear
task.
template
~template.filter_parameters
~
Notify method: filter
Default notifiers: sfViewParameterHolder
The template.filter_parameters
event is notified before a view file is rendered. By listening to this event you can access and manipulate variables passed to a template.
user
~user.change_culture
~
Notify method: notify
Default notifiers: sfUser
Parameter | Description |
---|---|
culture |
The user culture |
The user.change_culture
event is notified when the user culture is changed during a request.
~user.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfUser
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The user.method_not_found
event is notified when a method is not defined in the sfUser
class. By listening to this event, a method can be added to the class, without using inheritance.
~user.change_authentication
~
Notify method: notify
Default notifiers: sfBasicSecurityUser
Parameter | Description |
---|---|
authenticated |
Whether the user is authenticated or not |
The user.change_authentication
event is notified whenever the user authentication status changes.
view
~view.configure_format
~
Notify method: notify
Default notifiers: sfView
Parameter | Description |
---|---|
format |
The requested format |
response |
The response object |
request |
The request object |
The view.configure_format
event is notified by the view when the request has the sf_format
parameter set. The event is notified after symfony has done simple things like changing setting or unsetting the layout. This event allows the view and the response object to be changed according to the requested format.
~view.method_not_found
~
Notify method: notifyUntil
Default notifiers: sfView
Parameter | Description |
---|---|
method |
The name of the called missing method |
arguments |
The arguments passed to the method |
The view.method_not_found
event is notified when a method is not defined in the sfView
class. By listening to this event, a method can be added to the class, without using inheritance.
view.cache
~view.cache.filter_content
~
Notify method: filter
Default notifiers: sfViewCacheManager
Parameter | Description |
---|---|
response |
The response object |
uri |
The URI of the cached content |
new |
Whether the content is new in cache or not |
The view.cache.filter_content
event is notified whenever a content is retrieved from the cache.
インデックス
Document Index
関連ページリスト
Related Pages
- Introduction
- The YAML Format
- Configuration File Principles
- The settings.yml Configuration File
- The factories.yml Configuration File
- The generator.yml Configuration File
- The databases.yml Configuration File
- The security.yml Configuration File
- The cache.yml Configuration File
- The routing.yml Configuration File
- The app.yml Configuration File
- The filters.yml Configuration File
- The view.yml Configuration File
- Other Configuration Files
- Events
- Tasks
- Appendix A - License
日本語ドキュメント
Japanese Documents
- 2011/01/18 Chapter 17 - Extending Symfony
- 2011/01/18 The generator.yml Configuration File
- 2011/01/18 Les tâches
- 2011/01/18 Emails
- 2010/11/26 blogチュートリアル(8) ビューの作成