【发布时间】:2014-04-17 04:32:50
【问题描述】:
我正在提交一个包含很多字段的表单,并尝试使用 handleRequest($request) 对其进行验证,如 Symfony 文档中所示。
我的实体很大,与其他实体有很多关系。
handleRequest($request) 正在验证每个提交的表单字段并检查错误。
发现的问题是在提交我的主要实体的相关实体的 id 时(例如办公室的人),handleRequest 将在内部获取相关实体的所有对象(相关实体的完整表,所有人)并将他们作为物体补水。
我认为它应该只检查提交的 id 是否存在于另一个表中,获取该相关实体对象并检查它是否有错误(而不是获取所有相关表)。
如果你检查和调试 Symfony2 handleRequest 的源代码,你很容易在这行发现同样的问题:
Form/Form.php
// Normalize data to unified representation
$normData = $this->viewToNorm($viewData);
$value = $transformers[$i]->reverseTransform($value);
如何在不处理这个问题的情况下仍然验证表单,这使得使用handleRequest($request) 验证表单变得异常缓慢?
如果我不使用 handleRequest 来验证它,它会自动将每个字段的错误添加到我的表单中,我如何手动验证每个字段,然后将每个字段的错误添加到我的表单中,并在下一个中显示查看?
【问题讨论】:
-
你能提供更多关于你是如何解决这个问题的吗?我的 $form->handleRequest($request) 处理时间超过 30 秒。我认为这与我实体的一个属性与另一个实体相关联有关。我实体的子道具是一个实体(不同类)。无论 symfony 做什么来将这些实体映射在一起,都需要太长的时间。
-
无论是在主窗体中还是在所有相关实体的窗体中,您都必须始终为所有字段指定变量类型。 stackoverflow.com/questions/7913086/…虽然很慢,但是你也可以调试handleRequest,检查它检查所有字段的循环,当它找到一个实体时,它会检查该实体的所有字段进入另一个循环,等等。跨度>
标签: php forms validation symfony