我有以下代码,我相信这不是做我想做的事情的正确方法..
这是我想要完成的
我有一个页面可以添加新的语言键和该键的翻译。翻译文本框是动态的(来自语言表)。每个文本字段的名称是该语言的区域设置(也存储在语言表中),我用它来获取语言 ID(链接在翻译表中)
这是我的数据库表
语
id (AI) --------> 语言ID
语言环境
语言名称
翻译
身份证 (AI)
语言标识
语言键
翻译
所以从语言表中我得到了应该在那里的文本框列表并循环它们
当用户点击保存时,我使用以下方式保存他输入的内容
if ($form->isValid()) {
print_r($form->getData()); // debug
foreach($form->getData() as $key => $value){ // get the submitted data
$oTranslation = new Translations(); // creat a new entity object
if($key == 'languageKey'){ // if it was the language key text field
$languageKey = $value;
continue;
}
$locale = $key; // the locale to extract the language id later on
$translation = $value;
//----- start getting the language id
$language = $this->getDoctrine()
->getRepository('CodeizSDBTranslatorBundle:Languages');
$query = $language->createQueryBuilder('l')
->select('l.id')
->where('l.locale = :locale')
->setParameter('locale' , $locale)
->getQuery();
$id = $query->getResult();
//----- end getting the language id
$oTranslation->setLanguageId($id[0]['id']); // setting the vlaues
$oTranslation->setLanguageKey($languageKey);
$oTranslation->setTranslation($translation);
$em = $this->getDoctrine()->getManager();
$em->persist($oTranslation);
$em->flush();// getting them into the database
}
return $this->redirect($this->generateUrl('codeiz_sdb_translator_addlanguagekey')); // redirect to some place
}
我知道我确实完成了工作,但这是我的问题..
他们是将数据正确保存到数据库的方式还是有更好的方法..