Symfony流程提交表格

Nic*_*aus 1 symfony

我有一个普遍的问题,处理提交表单的当前正确方式应该是什么样的,symfony文档并不清楚什么是正确的方法.
目前我总是这样做:

if ($request->isMethod(Request::METHOD_POST)) {
   $form->handle($request)
   if ($form->isValid()) {...}
}
Run Code Online (Sandbox Code Playgroud)

但我也看到了一些使用此语句的示例(也在symfony文档中):

$form->handle($request);
if ($form->isSubmitted() && $form->isValid()) {...}
Run Code Online (Sandbox Code Playgroud)

因此,没有人知道什么是正确的当前路要走以下symfony的开发者指南,应在第一语句中使用或第二,或都应该合并(尽管这会使得无论是$请求 - > isMethod致电或$形式 - > isSubmitted冗余)

Fra*_*eni 5

从技术上讲,您只需要:

if ($form->isValid()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

那是因为:

  • isValid()检查包括isSubmitted检查.
  • isMethod(Request::METHOD_POST)检查不一定是正确的(一个形式可以使用比不同的方法POST

但如果你真的想要遵循最佳实践,你应该使用:

if ($form->isSubmitted() && $form->isValid()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅http://symfony.com/doc/current/best_practices/forms.html#handling-form-submits.

附加信息

isSubmitted如果要实际验证数据之前执行某些特殊任务,可能需要单独使用该方法.我经常使用它进行自定义验证,例如

if ($form->isSubmitted()) {
    ...
    if ($form->isValid()) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)