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'))