Я смотрю на эту страницу слушателей событий http://www.doctrine -project.org / Documentation / manual / 1_1 / pl / event-listeners и я не уверен, какой слушатель использовать для внесения изменений после метода doSave () в 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;
}
То, что я хочу сделать, это сделать нестандартный слаг с именем предка этого нового места. Так что, если я вставлю «Сан-Франциско», слаг будет «США-Калифорния-Сан-Франциско»
public function postXXXXXX($event)
{
...
$event->getInvoker()->slug = $slug;
}
Проблема в том, что я вставляю новый объект без ссылки на его родителя. После сохранения я вставляю его в дерево. Так что я не могу сменить пулю до тех пор.
Я думаю, что прослушиватель транзакций мог бы работать, но я использую, есть лучший способ, которого я сейчас не вижу.
спасибо!