나는 Symfony 1.2를 Doctrine과 함께 사용하고 있습니다. 두 언어로 번역 된 Place 모델이 있습니다. 이 장소 모델에는 중첩 된 세트 비헤이비어가 있습니다.Symfony : 모델 번역 + 중첩 세트
다른 노드에 속한 새 장소를 만드는 데 문제가 있습니다. 나는 두 가지 옵션을 시도했지만 둘 다 실패 : 나는 양식을 병합하는 경우
1 옵션
$this->mergeForm(new PlaceTranslationForm($this->object->Translation[$lang->getCurrentCulture()]));
, 무슨 일이라는 place_id 필드 ID 배열의 값입니다. 나는 이드가있는 실제 물건을 기다리고 있기 때문이라고 생각합니다. place_id = ''을 (를) 설정하려고하면 다른 오류가 발생합니다.
이 옵션은 이제 오류가
$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
}
}
다음 SQL을 보면
Couldn't hydrate. Found non-unique key mapping named 'lang'.
는 ID가 정의되지 않은; 그래서 그것은 중복 레코드가 될 수 없습니다. (고유 키 (id, lang)이 있습니다)
어떤 일이 벌어 질 수 있습니까?
감사합니다.
솔루션 nº1에서 심포니가 장소 이전에 place_translation을 저장하려고 시도 했으므로 ID가 없으므로 오류가 있습니다 ...이 문제에 대한 해결책을 찾아야합니다. – fesja