在我的Symfony2应用程序中,我有处理表单提交的操作。为了清理我的控制器,我想知道哪里是做以下事情的最佳位置,或者控制器是否是处理表单和验证表单的正确位置。
public function addAction(Request $request)
{
$article = new Article();
$articleForm = $this->createForm(
'web_article_type',
$article
);
$articleForm->handleRequest($request);
if ($articleForm->isValid()) {
$manager = $this->getDoctrine()->getManager();
$manager->persist($article);
$manager->flush();
}
return $this->redirect($this->generateUrl('web_article_show'));
}
这已经是最佳实践形式了!
控制器是它的正确位置,因为它处理来自前端的数据。此外,如果表单出现错误,它会呈现模板,如果表单有效,它会激发其他操作。
我只会在以下情况下摆脱这种方式:
您有一个表单,应该为不同的用户角色/权限使用不同的字段进行扩展。
然后我将该表单定义为一种服务,以便更好地处理表单和进行更好的设计。