Я использую Symfony 1.2 с доктриной. У меня есть модель Place с переводами на двух языках. Эта модель Place также имеет поведение вложенного набора.Symfony: перевод модели + вложенный набор
У меня возникли проблемы с созданием нового места, которое принадлежит другому узлу. Я попробовал два варианта, но оба из них не:
1 вариант
$this->mergeForm(new PlaceTranslationForm($this->object->Translation[$lang->getCurrentCulture()]));
Если я сливаю форму, что происходит в том, что значение place_id поля идентификатора массива. Полагаю, это потому, что он ждет реального объекта с идентификатором. Если я попытаюсь установить place_id = '', появится еще одна ошибка.
2 вариант
$this->mergeI18n(array($lang->getCurrentCulture()));
public function mergeI18n($cultures, $decorator = null)
{
if (!$this->isI18n())
{
throw new sfException(sprintf('The model "%s" is not internationalized.', $this->getModelName()));
}
$class = $this->getI18nFormClass();
foreach ($cultures as $culture)
{
$i18nObject = $this->object->Translation[$culture];
$i18n = new $class($i18nObject);
unset($i18n['id']);
$i18n->widgetSchema['lang'] = new sfWidgetFormInputHidden();
$this->mergeForm($i18n); // pass $culture too
}
}
Теперь ошибка:
Couldn't hydrate. Found non-unique key mapping named 'lang'.
Глядя на SQL, идентификатор не определен; поэтому у меня нет уникального ключа (id, lang))
Любая идея о том, что может произойти?
спасибо!
Я обнаружил, что с решением nº1 symfony пытается сохранить place_translation перед местом, поэтому есть ошибка, потому что у него нет идентификатора ... Мне все еще нужно найти решение для этого – fesja