Короткий ответ, который я нашел, заключается в том, что простого и элегантного способа использования форм i18n не существует.
Я не нашел четкого способа сделать это, проблема в том, что формы i18n в symfony работают напрямую с $ record-> Translation, symfony не использует какой-либо метод _set, в этом случае нет изменения в исходной записи (Subject) только в объекте recordTranslation.
Возможно, если вы переопределите метод saveEmbeddedForms в форме записи (SubjectForm), перебираете все формы i18n и обнаруживаете для каждой измененной формы и, наконец, каким-либо образом изменяете или помечаете как измененную исходную запись, поэтому, когда сохранено событие postSave будет запущено.
public $already_saved;
public function doSave($con = null) {
$this->already_saved = $this->object->isModified();
parent::doSave($con);
}
public function saveEmbeddedForms($con = null,$forms = null){
if (null === $con)
$con = $this->getConnection();
if (null === $forms)
$forms = $this->embeddedForms;
foreach($forms as $form) {
if ( count($form->object->isModified()) != 0){
$mark_for_save = true;
break;
}
}
parent::saveEmbeddedForms($con, $forms);
if (@$mark_for_save && !$this->already_saved) {
$this->object->postSave();
}
}