Which is the event listener after doSave() in Symfony?

Posted by fesja on Stack Overflow See other posts from Stack Overflow or by fesja
Published on 2010-02-23T17:59:52Z Indexed on 2010/05/31 9:02 UTC
Read the original article Hit count: 209

Filed under:
|
|
|

Hi,

I've been looking at this event-listeners page http://www.doctrine-project.org/documentation/manual/1_1/pl/event-listeners and I'm not sure which is the listener I have to use to make a change after the doSave() method in the BaseModelForm.class.php.

// PlaceForm.class.php
protected function doSave ( $con = null )
{
  ...
  parent::doSave($con);
  ....

  // Only for new forms, insert place into the tree
  if($this->object->level == null){

    $parent = Place::getPlace($this->getValue('parent'), Language::getLang());
    ...
    $node = $this->object->getNode();
    $method = ($node->isValidNode() ? 'move' : 'insert') . 'AsFirstChildOf';
    $node->$method($parent); //calls $this->object->save internally
  }

  return;
}

What I want to do is to make a custom slug with the ancestors' name of that new place. So if I inserting "San Francisco", the slug would be "usa-california-san-francisco"

public function postXXXXXX($event)
{
  ...
  $event->getInvoker()->slug = $slug;
}

The problem is that I'm inserting a new object with no reference to its parent. After it's saved, I insert it to the tree. So I can't change the slug until then.

I think a Transaction listener could work, but I'm use there is a better way I'm not seeing right now.

thanks!

© Stack Overflow or respective owner

Related posts about events

Related posts about symfony