嘿,我在我的网站上用两种不同的语言保存每一页。我想用我正在用symfony2开发的管理区域管理我的页面。用Symfony2在一个控制器中处理两种形式
以下控制器代码可以在包含来自数据库的正确数据的同一页上显示两个表单。一种形式以管理为EN的DE语言和另:
查看:
<form action="{{ path('admin_about') }}" method="post" {{ form_enctype(formEN) }}>
{{ form_widget(formEN) }}
<button type="submit" class="btn btn btn-warning" naem="EN">Save</button>
</form>
<form action="{{ path('admin_about') }}" method="post" {{ form_enctype(formDE) }}>
{{ form_widget(formDE) }}
<button type="submit" class="btn btn btn-warning" name="DE">Save</button>
</form>
控制器: 公共职能aboutAction(请求$要求) {
$pageEN = $this->getDoctrine()
->getRepository('MySitePublicBundle:Page')
->findOneBy(array('idName' => 'about', 'lang' => 'EN'));
$pageDE = $this->getDoctrine()
->getRepository('MySitePublicBundle:Page')
->findOneBy(array('idName' => 'about', 'lang' => 'DE'));
if (!$pageDE) {
throw $this->createNotFoundException('About page (DE) not found.');
}
if (!$pageEN) {
throw $this->createNotFoundException('About page (EN) not found.');
}
$formDE = $this->createFormBuilder($pageDE)
->add('title', 'text')
->add('content', 'text')
->getForm();
$formEN = $this->createFormBuilder($pageEN)
->add('title', 'text')
->add('content', 'text')
->getForm();
//Save Form here
return $this->render('MySitePublicBundle:Admin:about.html.twig', array(
'aboutPageDE' => $pageDE, 'aboutPageEN' => $pageEN, 'formDE' => $formDE->createView(), 'formEN' => $formEN->createView(),
));
}
我的问题是:如何保存已从一个控制器中使用的表单?
您可能希望查看[form classes](http://symfony.com/doc/current/book/forms.html#creating-form-classes)并在那里处理翻译。这样,你只有一种形式担心持续(并且不必为每个翻译复制“FormBuilder”代码。 – Nick 2012-07-11 16:14:19
我不明白这是如何解决我的问题的?!或者它只是为了不要重复自己?:-) – Sven 2012-07-11 16:43:25
哦,你在寻找如何将它们保存在一般?我将添加一个答案... – Nick 2012-07-11 22:03:08