Symfony流程提交表

Symfony流程提交表,symfony,Symfony,我有一个一般性的问题,当前处理提交表单的正确方式应该是什么样的,symfony文档不太清楚什么是正确的方式。 目前我一直在做这样的事情: if ($request->isMethod(Request::METHOD_POST)) { $form->handle($request) if ($form->isValid()) {...} } 但我也看到了一些例子(也在symfony文档中),其中使用了这种说法: $form->handle($request);

我有一个一般性的问题,当前处理提交表单的正确方式应该是什么样的,symfony文档不太清楚什么是正确的方式。
目前我一直在做这样的事情:

if ($request->isMethod(Request::METHOD_POST)) {
   $form->handle($request)
   if ($form->isValid()) {...}
}
但我也看到了一些例子(也在symfony文档中),其中使用了这种说法:

$form->handle($request);
if ($form->isSubmitted() && $form->isValid()) {...}

那么,是否有人知道当前遵循symfony开发者指南的正确方法是什么,应该使用第一条语句还是第二条语句,或者两者结合使用(尽管这会使$request->isMethod调用或$form->isSubmitted多余)

通常这两种方法都是正确的。
仅第一个示例检查了请求类型,而第二个示例仅检查提交并进行验证。

通常这两种方法都是正确的。
第一个示例检查请求类型,第二个示例检查提交并进行验证。

从技术上讲,您只需要:

if ($form->isValid()) {
    ...
}
那是因为:

  • isValid()
    检查包括
    isSubmitted
    检查
  • isMethod(Request::METHOD\u POST)
    检查不一定正确(表单可以使用与
    POST不同的方法
但如果你真的想遵循最佳实践,你应该使用:

if ($form->isSubmitted() && $form->isValid()) {
    ...
}
有关详细信息,请参阅

附加信息 如果您想在实际验证数据之前执行一些特殊任务,您可能需要单独使用
isSubmitted
方法

if ($form->isSubmitted()) {
    ...
    if ($form->isValid()) {
        ...
    }
}

从技术上讲,您只需要:

if ($form->isValid()) {
    ...
}
那是因为:

  • isValid()
    检查包括
    isSubmitted
    检查
  • isMethod(Request::METHOD\u POST)
    检查不一定正确(表单可以使用与
    POST不同的方法
但如果你真的想遵循最佳实践,你应该使用:

if ($form->isSubmitted() && $form->isValid()) {
    ...
}
有关详细信息,请参阅

附加信息 如果您想在实际验证数据之前执行一些特殊任务,您可能需要单独使用
isSubmitted
方法

if ($form->isSubmitted()) {
    ...
    if ($form->isValid()) {
        ...
    }
}

我知道这两种方法都有效,但必须有一个准则,即哪一种是“标准”代码样式第一个示例只需检查请求方法--POST/GET/PUT等。在本例中,如果请求不是POST方法,则不会处理表单。在第二个示例中--表单将使用任何请求方法处理,因此它只需使用
$form->isSubmitted()
。同样的事情是这样的:
如果($request->isMethod(request::METHOD_POST)| |$request->isMethod(request::METHOD_GET))…
。那么在第二个例子中,简单地忽略了这个检查。我知道这两种方法都有效,但必须有一个准则,哪一个是“标准的”代码样式第一个示例只需检查请求方法--POST/GET/PUT等。在本例中,如果请求不是POST方法,则不会处理表单。在第二个示例中,表单将使用任何请求方法进行处理,因此它只需使用
$form->isSubmitted()
。类似于此:
if($request->isMethod(request::method\u POST)||$request->isMethod(request::METHOD_GET))…
。所以在第二秒钟中,简单地省略了这个检查。