【发布时间】:2014-11-11 05:11:37
【问题描述】:
对于一个项目,我需要检查 PUT 请求中是否存在所有表单的字段。
使用NotNull / NotBlank 约束的简单数据验证不合适,因为请求中的字段可以设置为NULL 或空白值但他们必须在场。
我的想法是从表单的字段中获取所有名称并检查这些字段是否存在于请求数组中。
为了做到这一点,我需要获取这些字段的名称,Form 类中有一个名为 orderedKeys 的数组,其中包含我想要的内容,但是变量设置为 private。
还有其他方法可以访问这些密钥吗?
【问题讨论】:
-
在提交表单后使用控制器内部的 $form->getData() 并检查内部的所有字段是否正确,但通过检查 $form->isValid() 所有字段应为预期,使用 formtype 也可以更好地为您想要的字段提供默认值。在 $request 里面你也有那些字段 $request->request->get('yourfield');
-
getData 函数返回由表单“塑造”的对象,我不明白这对我有什么帮助。 isValid 函数不检查是否所有表单的字段都存在。而且我不想将默认值放入字段。我想要的是能够检查 Request 对象并查看是否所有表单的字段都存在,如果不存在,我将发送错误请求异常并要求用户正确填写 PUT 请求的表单。