symfony event dispatcher cheat sheet
http://www.symfony-project.org/book/1_2/17-Extending-Symfony
Create a notifier
notify
The registered methods of the listeners are executed
$this->dispatcher->notify(new sfEvent($this, 'rest_request.fetch_prepare', array( 'uri' => $uri, 'parameters' => $parameters )));
notifyUntil
The first registered method that returns true of the listeners is executed
$this->dispatcher->notifyUntil(new sfEvent($this, 'rest_request.fetch_prepare', array( 'uri' => $uri, 'parameters' => $parameters )));
filter
The listener can change values
$values = sfContext::getInstance()->getEventDispatcher()->filter( new sfEvent($this, 'form.update_object'), $values )->getReturnValue();
(getting dispatcher from the symfony context)
Connect a listener to the notifier
In class ullMetaWidgetPassword:
$this->dispatcher->connect('form.update_object', array('ullMetaWidgetPassword', 'listenToUpdateObjectEvent'));
(getting dispatcher from within a objects attribute)
The method to be called by the notifier in case of filter
public static function listenToUpdateObjectEvent(sfEvent $event, $values) { if ($values['password'] == '') { unset($values['password']); } return $values; }
In case of a notify:
public static function listenToUpdateSingleColumnEvent(sfEvent $event) { $params = $event->getParameters(); $column = $params['column']; $booking = $params['object']; // to something }
Use symfony event dispatcher in doctrine models
sfProjectConfiguration::getActive()->getEventDispatcher()->notify(new sfEvent($this, 'foo.bar'))