我有一个普遍的问题,处理提交的表单的当前正确方式应该是什么样的,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)
答案 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)
一般来说两者都是正确的。 第一个示例在第二个示例时检查请求类型,只需检查提交并进行验证。