时间:2016-05-02 12:19:46

标签: symfony

我有一个普遍的问题,处理提交的表单的当前正确方式应该是什么样的,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 redundant)

2 个答案:

答案 0 :(得分:5)

技术上,您只需要:

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

那是因为:

  • isValid()支票包含isSubmitted支票。
  • isMethod(Request::METHOD_POST)检查不一定正确(表单可以使用与POST不同的方法

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

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

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

其他信息

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

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

答案 1 :(得分:0)

一般来说两者都是正确的。 第一个示例在第二个示例时检查请求类型,只需检查提交并进行验证。